Compare commits

...

2519 Commits

Author SHA1 Message Date
2ff58d1e8c ygb 2026-09-20 17:06:39 +08:00
be1b1cb3da ygb 2026-09-20 16:03:38 +08:00
04f08fbc6e ygb 2026-09-18 16:01:13 +08:00
4ec68ac8cf 手动处理余额 去除写死的admin权限 2026-09-18 16:01:01 +08:00
5964f886ec 原始的 2026-09-18 15:50:13 +08:00
16c4c08914 手动处理余额 去除只有管理员权限 2026-09-18 14:52:47 +08:00
fffbe971d0 fix: 移除18位控制 2026-08-17 14:48:53 +08:00
e7d171d7f8 feat: 增加开启是否校验 2026-07-28 10:05:44 +08:00
fab9e79496 fix: 单工号同步前清理 SAP 历史 2026-07-28 09:51:39 +08:00
a862ad9815 fix: 无效方法移除 2026-07-27 18:29:42 +08:00
9deb1f3dc1 perf: 优化人员同步权限和历史查询 2026-07-27 18:29:13 +08:00
66e1ad5a19 fix: 修复 SAP 人员同步一致性 2026-07-27 15:19:53 +08:00
e0a2a9ea0d feat: 处理触发 2026-07-10 14:11:20 +08:00
7d52540ebf fix: . 2026-06-29 16:03:06 +08:00
2c795c12b8 fix: . 2026-06-29 15:54:30 +08:00
ad6d7ea29e fix: . 2026-06-29 15:28:17 +08:00
2e22d145bc fix: . 2026-06-29 14:59:20 +08:00
32e9f1e184 fix: . 2026-06-29 14:53:54 +08:00
365a2d0790 fix: . 2026-06-29 14:52:14 +08:00
147100d27c fix: 移除try catch 2026-06-29 14:26:20 +08:00
43d967a9e4 fix: 单独处理db 2026-06-29 14:13:46 +08:00
e0dc896623 fix: 移除事务标记 2026-06-29 14:10:21 +08:00
058b8937c1 fix: 增加日志 2026-06-29 13:56:38 +08:00
5c8d7d1b7a fix: 查询null处理 2026-06-26 17:29:57 +08:00
89a16ded9e fix: 修改为单例 2026-06-23 17:33:33 +08:00
1356351c7c fix: 配置缺少 2026-06-23 17:27:11 +08:00
950e929671 fix: 判断目录pcode问题移除 2026-06-23 15:43:29 +08:00
ca55204b4a fix: 增加提醒 2026-06-23 15:33:07 +08:00
3514610857 feat: 人证人脸对比 2026-06-23 15:21:47 +08:00
e720cefaf7 feat: nameEn显示 2026-06-09 16:03:51 +08:00
e9975af591 fix: 优化查询字段命中问题 2026-06-08 09:42:04 +08:00
be90d98ee1 fix: 没有gainfo也属于差异数据 2026-06-04 15:18:10 +08:00
c81dd84d76 fix: 离职人员梯控删除 2026-05-29 15:51:51 +08:00
dfb020f589 fix: 遗漏datapermission问题 2026-05-28 10:20:00 +08:00
0c7bc443de fix: . 2026-05-27 12:02:21 +08:00
cbd375fbb4 fix: 人员同步按最新数据处理 2026-05-27 11:47:12 +08:00
05f0dfb312 feat: 用户卡号导入 2026-05-22 11:53:15 +08:00
3fa80c7f21 fix: . 2026-05-22 11:26:05 +08:00
ef038d1b3e fix: 优化权限不足时,导致无法获取delete任务 2026-05-22 11:22:46 +08:00
6ef843cf3c fix: 员工二维码消费,设备和人员相关的厂区一致时,不检验数据权限 2026-05-22 10:08:54 +08:00
b01e964b48 fix: 增加校验外包工号输入 2026-05-15 16:03:48 +08:00
137481aa42 fix 离职人员 2026-05-15 09:50:59 +08:00
074e4919fd fix 权限处理 2026-05-13 21:33:58 +08:00
7dc200ad36 fix: 移除循环 2026-05-13 17:26:41 +08:00
9e599f183a fix: 减少where 条件 2026-05-13 17:13:43 +08:00
2f46d45b98 fix . 2026-05-13 15:05:02 +08:00
4ece8fc1e5 fix 判断是否存在 2026-05-13 13:52:33 +08:00
37f67cb2ce fix: 再次处理 2026-05-13 13:33:29 +08:00
559b8f4358 fix . 2026-05-13 13:17:59 +08:00
7aa249231e fix . 2026-05-13 13:08:37 +08:00
06da5bb0d2 fix: 优化差异数据 2026-05-13 12:58:26 +08:00
2d2adffb9b fix: 同步问题 2026-05-13 12:43:35 +08:00
055ee094a4 fix: PLANS hashcode 2026-05-13 12:03:45 +08:00
a6ec02a5fb fix: 修改按工号拉取 2026-05-12 14:44:35 +08:00
aaa5491b37 fix: 换卡逻辑记录错误 2026-05-06 18:37:33 +08:00
0f9946a284 fix: 遗漏的修改 2026-05-06 17:15:50 +08:00
89619e5a49 fix: 调整接口响应结构 2026-05-06 17:14:08 +08:00
008096302b fix 调整同步字段 2026-05-06 13:57:20 +08:00
278300a4f4 fix: 新增预约区域编码唯一性校验
在保存预约区域时,新增对 CustomCode 的唯一性校验,防止插入重复编码,若已存在则抛出异常提示“编码已存在”。
2026-04-28 16:46:30 +08:00
ddfaf04201 fix cardNo显示 2026-04-21 14:16:56 +08:00
ad53820425 fix 编辑时校验移除 2026-03-30 17:49:46 +08:00
33c0304e55 fix 外包工号约束 2026-03-30 10:11:54 +08:00
7dd80aac99 fix 优化时间区间筛选 2026-03-17 10:38:01 +08:00
04d9179b4b fix 身份证大写处理 2026-03-17 10:33:44 +08:00
21589ae186 fix 大小写身份证 2026-03-17 10:30:28 +08:00
d05bbf081d fix 增加旧卡号返回 2026-03-13 16:21:41 +08:00
f1cb0813db feat 梯控相关 2026-03-13 15:42:36 +08:00
9d0600ebb8 fix 补充时间 2026-03-12 16:04:16 +08:00
8733911aff fix 移除tenantId 2026-03-09 17:43:24 +08:00
27edc27e71 fix . 2026-03-09 17:32:01 +08:00
50f403961f fix 优化查询和检查 2026-03-09 17:31:21 +08:00
bebdf04d68 feat 人员指纹数据 2026-03-09 17:18:26 +08:00
9a552bc88e fix . 2026-03-05 12:22:15 +08:00
de45b96371 fix . 2026-03-05 12:09:37 +08:00
e07c18c174 fix 重新入职问题导致数据过滤错误 2026-03-05 11:49:55 +08:00
8b58f044c2 fix . 2026-03-02 10:15:28 +08:00
5d2d6f7b29 fix 非闰年29号生日问题 2026-03-02 10:11:17 +08:00
c367d2b253 . 2026-02-25 13:21:00 +08:00
1e2d1b678a . 2026-02-25 13:16:37 +08:00
e84ab28a24 test . 2026-02-25 13:12:23 +08:00
cd9723cb4b test . 2026-02-25 13:08:59 +08:00
2b93ac2e7f fix 调整生日券退款.增加数据上传 2026-02-09 10:23:05 +08:00
74d87348e6 fix . 2026-02-06 11:05:40 +08:00
59786ef164 fix 提高索引命中 2026-02-06 10:57:20 +08:00
f43c2d6c59 fix 不再支持老系统档案号 2026-02-03 18:57:12 +08:00
67481931fc fix 访客增加检查数据参数 2026-02-02 15:38:07 +08:00
89223a8113 fix 增加设备类型 2026-01-26 11:30:42 +08:00
2fdb7b477f fix 移除外包的访客控制 2026-01-23 11:34:29 +08:00
0e91f09605 fix trim空格 2026-01-21 14:58:53 +08:00
c7fce25959 fix 完整提示 2026-01-20 10:02:36 +08:00
3fad6fd774 fix 增加具体人员提醒 2026-01-19 09:57:59 +08:00
77a5d067b0 fix 类型直接判断 2026-01-14 10:49:57 +08:00
6722404519 fix 增加数据错误类型提醒 2026-01-13 16:09:01 +08:00
a9eb4f6bed fix DateTime时间格式错误 2026-01-09 10:51:44 +08:00
83a53b31af fix 计算离场天数问题 2026-01-08 16:11:08 +08:00
c24bdddb16 fix 增加入职日期判断 2026-01-07 10:59:52 +08:00
d7a34c6e10 fix 生日券发放细节日志 2026-01-06 10:35:27 +08:00
0bcb80f101 fix . 2026-01-04 17:37:18 +08:00
270a724503 debug . 2026-01-04 17:22:09 +08:00
7994d831f1 fix 优化差异人数显示 2026-01-04 17:11:28 +08:00
e71e7cd7fc feat 获取不在设备中的人员 2025-12-30 17:20:35 +08:00
b23bdc3e46 fix 补充岗位信息记录 2025-12-30 10:15:31 +08:00
9aa3d8688e fix 差异对比处理 2025-12-29 16:57:56 +08:00
8bb0993a3b fix 更新岗位字段获取变更,生日券发放提醒标题变更 2025-12-29 16:46:16 +08:00
e14577b76c fix 增加权限数据展开 2025-12-24 17:24:43 +08:00
74c5eafa8c fix 逻辑恢复 2025-12-24 15:12:08 +08:00
6c606c6791 fix 数据类型过滤 2025-12-24 14:52:46 +08:00
e6c4e523e4 fix 排除设备类型变更问题 2025-12-24 14:34:58 +08:00
71e3e4fd0b fix 恢复数据代码 2025-12-24 10:18:06 +08:00
a100ec2216 fix 移除group by 2025-12-24 10:11:21 +08:00
e94e3e5b58 fix 券唯一码生成逻辑调整 2025-12-23 16:14:40 +08:00
0a5bf071c8 fix 调整发送方式和查询过滤 2025-12-23 16:09:34 +08:00
47ad57d861 feat 增加link发送类型 2025-12-23 16:09:01 +08:00
bb10c62fab fix 消息通知,消费明细查询 2025-12-23 14:23:35 +08:00
8004b7440c fix 白名单设置增加厂区 2025-12-23 11:21:55 +08:00
bc94f9ed72 fix 增加厂区查询 2025-12-23 09:41:41 +08:00
429b9c0e1a fix 优化判断逻辑和获取时间逻辑 2025-12-19 17:08:18 +08:00
8be9468a8b fix . 2025-12-19 10:34:55 +08:00
cefc35030b fix 增加恢复处理 2025-12-19 10:19:46 +08:00
b58d877134 fix 天数处理 2025-12-19 10:06:56 +08:00
54943e134f fix userIds查询 2025-12-18 10:31:47 +08:00
4d1dbd1985 fix 逻辑问题处理 2025-12-18 09:40:58 +08:00
0fb0cb1038 feat 增加券导入,获取设备数据权限的人员 2025-12-17 15:04:52 +08:00
d615492ef9 fix 移除调试代码 2025-12-17 12:25:45 +08:00
a74c2fa48b fix 逻辑处理问题 2025-12-17 12:25:17 +08:00
54ed9e5933 fix 券发放查询增加厂区 2025-12-17 11:06:18 +08:00
4bca8859ef fix 子查询补充过滤 2025-12-17 11:04:56 +08:00
b409f6f375 fix 修复网格解散的情况 2025-12-16 11:55:34 +08:00
b2d2f23185 fix 调整触发时间 2025-12-15 11:52:31 +08:00
c6c195512e fix ValidDateTime 2025-12-12 13:34:16 +08:00
bb15006afa fix 补充定时cron 2025-12-12 13:20:59 +08:00
d357882588 fix 获取不到工号问题 2025-12-12 12:23:57 +08:00
151ce72ae7 fix 脏数据处理 2025-12-12 10:09:11 +08:00
2f9c452083 feat 自动移除例外 2025-12-10 16:34:16 +08:00
58fc942469 fix 增加名称,移除测试No条件 2025-12-10 16:10:09 +08:00
18b9e4244d fix 接口路由名称 2025-12-10 16:04:29 +08:00
7a4307ab34 debug 增加测试no 2025-12-10 15:30:38 +08:00
4dc3bff28a fix 时间匹配 2025-12-10 15:28:36 +08:00
7a50b21592 fix 修复查询 2025-12-10 14:30:17 +08:00
17c5d6a54c fix 恢复代码 2025-12-10 14:05:17 +08:00
86c6283f81 fix 补充处理 2025-12-10 12:04:51 +08:00
5f4704467b fix 数据处理 2025-12-10 11:59:39 +08:00
4ea0a1180f fix 移除过滤条件 2025-12-10 10:58:54 +08:00
1f71b660c1 fix 补充字段no 2025-12-10 10:07:26 +08:00
4dfccbdea3 fix 注入问题 2025-12-10 10:03:14 +08:00
80d9701540 fix . 2025-12-09 17:44:48 +08:00
61bd8e8bb0 fix 补充日志 2025-12-09 17:38:14 +08:00
6ee14f15d0 fix 数据过滤 2025-12-09 17:32:25 +08:00
da3bb6fe9b fix 批量上传 2025-12-09 17:26:48 +08:00
3a88a2bcfa chore 移除 2025-12-09 16:51:08 +08:00
8d4a929fe4 debug . 2025-12-09 15:40:09 +08:00
07c8e7c0f3 chore 指定nuget配置 2025-12-09 15:36:13 +08:00
0a195492ae chore 移除无用nuget package 2025-12-09 15:24:07 +08:00
09326ddeed fix 消费额为0跳过 2025-12-09 15:01:54 +08:00
24960cf538 fix 汇总消费需要ABS 2025-12-09 14:57:40 +08:00
a0c8bf33c7 chore nuget version 2025-12-09 14:41:51 +08:00
cdd435efb3 fix 获取注入服务问题 2025-12-09 14:40:21 +08:00
149fa2e9e2 fix 联合索引,年份 2025-12-09 14:22:04 +08:00
c1462a03dc feat 生日券功能,自动上传消费数据,提醒访客到期 2025-12-09 11:35:05 +08:00
323eb367d0 chore 配置变更 2025-12-09 11:24:58 +08:00
4c125e92f4 feat 例外人员权限增加到期时间,厂区配置增加生日券,外包自动离场报名单 2025-12-09 11:24:09 +08:00
726e62d032 feat 访客强制离场通知,自动离场增加节假日判断 2025-12-09 11:16:09 +08:00
59557ab617 fix cron 2025-11-24 14:37:50 +08:00
b599532569 fix 增加同步间隔 2025-11-24 14:00:42 +08:00
099b9f7223 fix 移除指定网格 2025-11-19 11:19:58 +08:00
37794743fd fix 恢复同步逻辑 2025-11-17 11:41:45 +08:00
f153d6e3a4 fix 数据处理接口 2025-11-17 10:48:32 +08:00
8e58d47d7a fix 增加脏数据处理
- 优化第二天没有出差数据(基地),导致前一天需要被删除的数据没有执行
2025-11-14 16:45:24 +08:00
3f1f6d1525 fix 手动上传访客照片支持上传大华 2025-11-14 15:06:43 +08:00
c84b8e4954 fix 外部接口调用封装处理 2025-11-13 17:56:31 +08:00
25f36f8d12 fix 移除证卡api调用 2025-11-10 16:20:51 +08:00
ec78a756e6 fix 暂时移除DetectFaceImageQualityAsync 2025-11-10 16:05:57 +08:00
7eb1e3368e feat 网格增加其他上传 2025-11-10 11:33:37 +08:00
6b5603cc0e fix 网格白班时段码禁止跨天配置 2025-10-30 14:10:34 +08:00
c07a48a5ce fix 处理userNo设计问题导致下发不存在的人员任务尝试 2025-10-29 17:24:46 +08:00
e94d234566 fix idno为空人员不执行insert 2025-10-28 11:31:16 +08:00
b6af5f2e93 fix 减少异常日志输出 2025-10-28 11:24:42 +08:00
ad144a9e16 fix 处理已知异常 2025-10-28 11:14:28 +08:00
d273610214 fix 处理海康接口异常问题 2025-10-27 10:57:58 +08:00
4f6cc6e8de fix 范围变更 2025-10-24 14:21:24 +08:00
28af6e2a6b fix 时段名称显示 2025-10-24 14:05:46 +08:00
f9e113a6d5 fix 增加日志输出 2025-10-23 11:51:51 +08:00
a0c0b11b13 feat 移除7天内离职人员face图片 2025-10-23 11:24:54 +08:00
b03b7b9963 fix 人员权限增加例外 2025-10-20 14:36:22 +08:00
53bb887101 feat 处理达实下发任务状态 2025-10-17 19:15:30 +08:00
ef3e447e5c fix abs 2025-10-16 14:20:50 +08:00
6d8862fdbd feat 获取剩余 2025-10-16 11:48:13 +08:00
0db40fdce6 fix 增加null校验 2025-10-16 11:34:28 +08:00
6e7813aa00 fix 操作人 2025-10-15 19:00:57 +08:00
409d967c32 fix . 2025-10-15 18:52:19 +08:00
8cbbbaffdc fix >0 因为数据为负数 2025-10-15 18:49:54 +08:00
498e68ade5 fix 供应商入参 2025-10-15 18:40:01 +08:00
a44741bcae fix httpMethod 2025-10-15 18:34:25 +08:00
77d56b39b5 fix FromRoute 2025-10-15 18:24:32 +08:00
6615033983 tmp 供应商结算 2025-10-15 18:19:38 +08:00
a572d3258a fix 营业点查询和负数处理 2025-10-14 14:39:58 +08:00
a4c45f3ba8 fix 优化查询 2025-10-14 14:29:37 +08:00
62e3fbe37b feat: 功能优化和增加餐饮分析 2025-10-14 12:32:02 +08:00
5d468fe23c fix fromRoute 2025-10-11 13:50:03 +08:00
7402d75ed2 fix 支持月份定义 2025-10-11 13:46:00 +08:00
50a72fe5f4 feat 设备分页增加同步设备与权限人员的操作标记 2025-10-11 12:05:13 +08:00
8a67c0d23a fix 增加离职人员判断 2025-10-11 10:14:51 +08:00
0de9991db6 fix 增加事务和deviceUsers标记处理 2025-10-10 18:10:15 +08:00
66bb96a057 feat 删除多余人员 2025-10-10 18:04:48 +08:00
0d87b79473 fix 优化逻辑 2025-10-10 17:53:08 +08:00
011c166439 feat 获取需排除的人员 2025-10-10 17:41:06 +08:00
af38a600e8 fix 增加log 2025-10-10 15:00:40 +08:00
268182220d fix select数据错误 2025-10-10 14:53:48 +08:00
b708efa87e fix 空开判断提前 2025-10-10 14:36:26 +08:00
1268105507 fix 电子围栏增加部署方向 2025-10-10 11:26:15 +08:00
eab455aef6 Merge branch 'feature/feat-efence' 2025-10-09 14:32:24 +08:00
efa0962f73 feat: 通行和空开 2025-10-09 14:31:59 +08:00
f66c38d668 fix ControllerBase 2025-09-29 16:18:27 +08:00
d84d8cd809 feat 设备人员上传 2025-09-29 16:04:33 +08:00
f71e58dfc1 fix 调整表 2025-09-29 15:10:53 +08:00
0b66033b25 feat 电子围栏数据配置 2025-09-29 14:56:58 +08:00
f8705e7137 docs . 2025-09-26 13:49:18 +08:00
6ba81c6481 feat 增加厂区消费查询 2025-09-22 16:16:54 +08:00
2e58a6116a fix IsEnterDoorArea 2025-09-16 22:42:43 +08:00
ec0c0fdbe7 fix 处理门岗名称 2025-09-16 18:25:01 +08:00
f532adc2ab fix 修复请求地址 2025-09-15 16:14:34 +08:00
0e00873502 add 补充日志 2025-09-15 16:10:35 +08:00
e151d121da fix 501单独处理不走主流程 2025-09-15 15:57:04 +08:00
5ff917c11f fix ThrowIfNotNull 2025-09-15 15:34:40 +08:00
0e934b2d04 feat 处理501独立的访客预约 2025-09-15 14:50:46 +08:00
3f25bb2689 fix 计算日期修改 2025-09-05 15:30:28 +08:00
0678f25f6f fix 优化获取开始id 2025-09-01 15:27:03 +08:00
b9b4cf5de3 fix 设置id=74782371 2025-09-01 14:09:56 +08:00
e00901004e fix 临时处理数据库压力 2025-09-01 12:41:35 +08:00
4ed7654aef fix 调整语法生成 2025-09-01 11:39:35 +08:00
e01d58be01 fix 临时注释 2025-08-29 15:05:45 +08:00
2ec2086b20 fix 取消获取总数 2025-08-15 11:05:37 +08:00
34cae4c8fd tmp . 2025-08-13 15:03:02 +08:00
739f5ae2c0 test . 2025-08-12 19:02:49 +08:00
505787c95c tmp . 2025-08-12 15:11:26 +08:00
61bbde9489 feat 处理设备下访客人员 2025-08-11 10:01:43 +08:00
cdbd9dea83 fix 取消班次增加打开记录在配置时间判断 2025-08-05 12:04:12 +08:00
40b4f5270c fix 查询位置 2025-08-04 16:59:09 +08:00
6217b0cafd fix 过滤未启用设备任务 2025-08-04 16:41:27 +08:00
cdb39dc424 fix 重置任务修改为重新创建任务处理 2025-07-25 14:41:53 +08:00
41bc12c964 add CreateTime 2025-07-22 11:02:05 +08:00
5bc2d78903 fix 时间处理问题 2025-07-22 10:37:03 +08:00
382c9f1b1a test 切换到769ace3b-28fa-4c4e-ba46-fc399a25085f 2025-07-21 17:38:42 +08:00
b1980f6455 fix 修改外部人员类型为外包 2025-07-21 09:06:07 +08:00
280f90aa2f fix 脱敏数据增加tenant-admin可查看 2025-07-18 13:49:33 +08:00
2f62412f96 fix 增加null处理场景 2025-07-18 13:28:07 +08:00
05883287de fix 外部人员检查照片 2025-07-18 13:25:53 +08:00
3220795299 fix 外部人员拍照检测 2025-07-18 12:11:05 +08:00
df8c455d56 fix 控制网格推送处理 2025-07-17 17:28:12 +08:00
3e19dbe744 fix IV_VTART = "01"; 2025-07-16 14:57:10 +08:00
5057bbd855 fix 网格排班推送到sap 2025-07-16 14:36:50 +08:00
c5d6166e9f fix 切换网格管理员人员需要为网格所在厂区 2025-07-16 10:02:10 +08:00
7da5c6b15d fix . 2025-07-15 16:39:10 +08:00
cedc984e56 feat 推送排班到sap 2025-07-15 16:33:23 +08:00
928b0f9236 test 改用4cc354b4-a727-4120-86b7-a160590bedb3 2025-07-15 16:14:05 +08:00
70eea3a693 fix 禁用一些日志输出 2025-07-15 16:00:18 +08:00
6f58d7a492 test 增加错误提醒返回 2025-07-15 15:56:58 +08:00
846d0e3a09 test 网格推送sap 2025-07-15 14:34:24 +08:00
6c2703cf92 feat 解散网格 2025-07-11 23:07:13 +08:00
74eeeaa3e6 fix 增加非高级角色处理 2025-07-09 15:57:07 +08:00
b2c3eb5220 fix 补充id 2025-07-08 17:42:50 +08:00
8bac9e0201 fix 补充检验 2025-07-08 16:53:22 +08:00
df29b91a94 fix 取消task.whenall 2025-07-08 16:00:44 +08:00
90f90e33d4 feat 网格二期补充 2025-07-08 15:49:35 +08:00
53d46cee0c fix 补充设备分组 2025-07-07 12:42:04 +08:00
379d75b251 fix . 2025-07-05 14:43:16 +08:00
f17481e35b fix 增加处理wait过期处理 2025-07-05 14:37:13 +08:00
ba3a6082b7 fix 排序问题 2025-07-05 14:20:19 +08:00
f3df724edb fix 移除多余的处理 2025-07-05 14:11:29 +08:00
e3720d6905 fix 使用id获取记录 2025-07-05 13:54:11 +08:00
60e43bfb9d fix 优化任务处理 2025-07-05 13:15:49 +08:00
77b2fdc222 fix 增加特殊任务处理 2025-07-05 11:43:03 +08:00
e9020ed7ec fix 使用modifiedTime 2025-07-05 11:27:19 +08:00
fe87266316 fix 移除学历比较(敏感信息) 2025-07-04 11:49:48 +08:00
3c8fe7c0bb refactor 命名优化 2025-07-04 11:48:54 +08:00
1c044df601 fix 缺少await 2025-07-03 19:32:16 +08:00
dfb7aaf840 fix 通过id比较查询任务 2025-07-03 19:26:40 +08:00
ed56457688 fix 更新时间到3点30; 调整索引使用顺序 2025-07-03 14:30:16 +08:00
0e476c5151 fix type补充 2025-07-03 11:59:30 +08:00
069a639cbb feat 增加厂区接口 2025-07-02 18:51:46 +08:00
9e8f51b93a fix 优化role分配级别问题 2025-07-02 16:49:29 +08:00
a57d5ef9a9 feat 增加根据厂区/变更时间获取归档数据 2025-07-02 14:44:16 +08:00
cc17cfa0f3 fix 优化数据获取排序方式 2025-07-01 17:24:14 +08:00
df0d7efbe7 fix 调整时间范围,创建同步时间任务 2025-07-01 12:01:00 +08:00
d9a21b385a fix 逻辑优化,避免数据生成过多 2025-07-01 11:43:19 +08:00
991ab4afeb fix 调整到5天 2025-07-01 10:19:55 +08:00
5057d88b7e fix 增加7天时间控制 2025-07-01 10:18:51 +08:00
6b990aa4f3 fix 注释暂时无用代码 2025-06-30 16:08:33 +08:00
e7c70d7948 fix 根据实际字段单独查询 2025-06-30 15:45:47 +08:00
221d985850 refactor 优化命名和结构,注释 2025-06-30 14:20:26 +08:00
6fd0a2b1ef fix 优化逻辑和性能 2025-06-30 14:11:34 +08:00
7f0890f0ac fix 增加人员类型 2025-06-27 20:11:23 +08:00
502a17589d refactor 移除无效代码,增加注释 2025-06-27 17:35:26 +08:00
00bc873605 refactor 项目结构
- sln升级到slnx
- 移除gateway项目
2025-06-27 17:25:37 +08:00
4fed736d27 refactor 移除不必要的测试方法,优化归档任务和同步任务的注释 2025-06-26 14:18:37 +08:00
8b93e28a66 feat 增加查询其他类型人员数量 2025-06-23 17:34:32 +08:00
b828a0738f fix 响应结果 2025-06-23 17:09:38 +08:00
97e93d47ae test . 2025-06-23 16:57:39 +08:00
6a474d81c6 test . 2025-06-23 16:51:35 +08:00
98651abcc1 test . 2025-06-23 16:49:16 +08:00
7c57948316 feat 添加获取设备下所有人员工号接口 2025-06-23 16:37:03 +08:00
e2f43cb01b refactor 简单优化
- 使用DepartmentDto替换DepartmentEntity
- 命名使用rider配置规范
2025-06-23 14:58:10 +08:00
4d8b7b5f16 test . 2025-06-20 17:41:57 +08:00
30f0fe6b58 add test api 2025-06-20 16:43:39 +08:00
3874eb0b80 test 测试获取远程ip 2025-06-20 16:33:34 +08:00
fac96a52a4 fix 使用datetime的searchDate 2025-06-17 16:17:27 +08:00
03f20bedc8 feat 人员考勤分析 2025-06-17 16:02:23 +08:00
72c4240764 add enum 2025-06-17 15:59:58 +08:00
a89609c63c feat 节假日 2025-06-17 15:59:38 +08:00
59dafeee40 fix 注释+设备密码脱敏 2025-06-13 20:00:48 +08:00
249f26fc60 fix 优化获取raiseDateTime?的问题 2025-06-12 12:10:53 +08:00
b4a8af21e2 fix 描述修改 2025-06-12 11:45:47 +08:00
82a130ec02 fix 供应商搜索 2025-06-12 09:32:29 +08:00
4714333913 doc JobPack.cs 2025-06-11 17:12:51 +08:00
74667f7d39 fix 修复已知问题 2025-06-11 17:03:07 +08:00
9b93eef87d fix 增加离职人员查询 2025-06-11 10:55:07 +08:00
5eb7d3fefa fix 强退人员增加Arrived和Wait判断处理 2025-06-11 10:13:52 +08:00
34c537a962 fix 增加返回大华人脸柜2401离职人员处理 2025-06-10 20:22:54 +08:00
f0f467562c fix 营业点明细查询支持多选 2025-06-10 13:48:31 +08:00
aca027e9e6 fix 增加where条件优化查询性能 2025-06-09 14:09:27 +08:00
685789d5e6 fix 不返回总数 2025-06-09 13:43:30 +08:00
83c5219f5b fix . 2025-06-09 10:47:15 +08:00
e69dca6180 fix 支持供应商搜索 2025-06-09 10:13:03 +08:00
bf64366089 fix 增加type 2025-06-06 16:11:33 +08:00
e716baa5cc feat 任务预警 2025-06-06 16:08:06 +08:00
fea1688c06 fix 排除离职的操作人员 2025-06-06 14:37:07 +08:00
6048a3833c fix 无主键定义实体删除 2025-06-06 13:50:49 +08:00
f8b68e7734 fix 修复部门变更不下发新部门权限 2025-06-04 10:13:29 +08:00
fbeead65b8 fix userNo获取方式 2025-05-30 14:26:23 +08:00
bf095f2a7c fix 恢复job 2025-05-28 14:41:16 +08:00
de976738e2 fix 恢复订餐部分功能 2025-05-28 14:36:25 +08:00
196f3413c5 fix idno匹配,避免人员归档后重复操作 2025-05-26 14:33:52 +08:00
80f845f630 fix . 2025-05-26 14:24:57 +08:00
6528d29404 add 获取访客门禁设备权限 2025-05-26 14:08:52 +08:00
ac88ae7a3b fix 处理同步时间,调整到5点 2025-05-24 20:29:49 +08:00
55f68d2009 fix 注释归档任务 2025-05-24 15:15:20 +08:00
55eee61e02 fix 网格排班移除处理 2025-05-23 17:37:27 +08:00
81be8763a4 fix 调整为凌晨3点执行 2025-05-22 16:05:33 +08:00
8581cb5190 fix nullable.value问题,改为使用修改时间 2025-05-22 14:43:01 +08:00
081ab58659 fix 分配人员到用户组:处理出差人员 2025-05-21 16:03:58 +08:00
08562df8eb fix 隐藏离职人员的数据 2025-05-20 12:47:36 +08:00
7188077442 fix 离职人员显示问题 2025-05-20 12:29:01 +08:00
9174f5ed37 fix second修改 2025-05-14 17:20:45 +08:00
b8c523f5a1 fix 返回值处理 2025-05-14 17:01:51 +08:00
4d6167daa7 fix 更新照片时间间隔增加 2025-05-13 15:13:20 +08:00
9a61dd1318 fix 时间更新和结果返回 2025-05-13 15:04:33 +08:00
330ecf9984 fix tenantId传递 2025-05-13 14:35:50 +08:00
351543298f fix 注释db操作 2025-05-13 14:21:38 +08:00
43be465471 fix 实体映射 2025-05-13 14:11:04 +08:00
21c7ac377c add entity 2025-05-13 14:06:23 +08:00
4bfb2660e8 feat 拍照对照片进行识别对比 2025-05-13 14:06:12 +08:00
cf6e03f986 fix . 2025-05-13 13:00:33 +08:00
403b4d968e test . 2025-05-13 12:55:33 +08:00
2e39625490 test . 2025-05-13 12:52:46 +08:00
97369345d0 fix . 2025-05-13 12:50:53 +08:00
f67b9d5474 test . 2025-05-13 12:47:28 +08:00
b95a465d96 test . 2025-05-13 12:39:38 +08:00
e63409fcf9 test . 2025-05-13 12:12:50 +08:00
e8f2082326 test . 2025-05-13 12:10:14 +08:00
8f4fa9f998 test . 2025-05-13 11:59:15 +08:00
b5772df127 test . 2025-05-13 11:55:50 +08:00
fd91cfe8c8 test . 2025-05-13 11:49:57 +08:00
d4ed9c3f78 test . 2025-05-13 11:43:42 +08:00
41ff294afc test . 2025-05-13 11:37:47 +08:00
643fbe63fc test hik face 2025-05-13 11:14:58 +08:00
ea1832894e fix 离职导致不显示问题 2025-05-13 10:30:42 +08:00
b80ea0a771 fix 变更返回的人员数据 2025-05-13 10:06:14 +08:00
2a45521ed7 feat 用户解锁 2025-05-13 09:57:22 +08:00
c2b97024dc fix 增加时间配置 2025-05-12 17:10:25 +08:00
cce445b607 fix 调整等待时间 2025-05-12 14:52:17 +08:00
a460bce6bc fix 考勤记录逻辑优化 2025-05-12 14:00:27 +08:00
43089e0a6b test . 2025-05-12 11:11:59 +08:00
543d2ad9e2 remove 停用归档处理 2025-05-09 09:50:16 +08:00
244fd43980 add 归档设备通行记录job 2025-05-08 15:10:18 +08:00
6d1f6a72a9 test . 2025-05-08 14:57:35 +08:00
ad027c2e3b test . 2025-05-08 14:47:24 +08:00
9a40b3a6fe test . 2025-05-08 14:43:16 +08:00
9f953767a3 add ip字段返回 2025-05-08 14:15:55 +08:00
2ba0776345 test . 2025-05-07 16:41:22 +08:00
1007880a0f test . 2025-05-07 16:40:16 +08:00
9654e38c72 test . 2025-05-07 14:46:31 +08:00
f7b2035cf4 test 数据迁移 2025-05-07 14:19:04 +08:00
2ed6bbabe7 fix 判断只获取人员对应厂区的记录 2025-05-07 10:28:21 +08:00
fced0c33ee fix 离职切换管理 2025-05-01 12:51:50 +08:00
d906fb8b42 fix 提前一小时不可排班 2025-04-28 10:28:40 +08:00
c135bf294a test . 2025-04-25 11:59:21 +08:00
6204ddbc57 feat 手动删除权限接口 2025-04-25 10:06:03 +08:00
caeeb8d0d5 fix log取消 2025-04-24 17:57:35 +08:00
11878dd1b9 test . 2025-04-24 17:53:26 +08:00
7c4654ee52 fix typeDesc 2025-04-24 17:31:49 +08:00
994318940d fix 例外人员设备type增加 2025-04-24 15:37:40 +08:00
d96cd44ffd fix 优化分配出差组和例外批量删除 2025-04-24 11:57:10 +08:00
289c6eccc2 fix 增加工号显示 2025-04-23 17:34:40 +08:00
b0b3122d29 fix . 2025-04-23 10:52:38 +08:00
832d30b6e1 fix 查询出差问题 2025-04-23 10:48:32 +08:00
5de794d644 fix 类型修改 2025-04-22 15:28:54 +08:00
fc4abae3b2 fix 优化导出处理 2025-04-22 14:21:03 +08:00
6198e4bb8e fix 过滤在职人员 2025-04-22 10:43:58 +08:00
9ce29ba833 fix 增加网格员名称名称 2025-04-21 13:48:46 +08:00
3a67e0b030 feat 营业点消费明细导出 2025-04-21 11:23:36 +08:00
d5aeb80af9 fix 增加消费类型导出 2025-04-21 10:34:18 +08:00
b68a6c471f feat 导出 2025-04-18 16:06:16 +08:00
4f9cd67fea feat 单独导出接口 2025-04-18 13:45:10 +08:00
61bf7e67e0 fix 提醒厂区不匹配的人员 2025-04-18 10:08:14 +08:00
86e4137c12 debug . 2025-04-17 14:40:02 +08:00
e78927cffa debug . 2025-04-17 14:32:44 +08:00
3f62d29e58 fix 日期处理 2025-04-17 11:27:14 +08:00
a3065c91e6 fix 获取size增加 2025-04-17 10:59:57 +08:00
723aecbe36 fix 获取设备组下的设备可跨厂区 2025-04-16 14:10:11 +08:00
e89c32a5d5 fix 字段保存 2025-04-16 10:51:42 +08:00
3e4d916ce7 fix 查询处理 2025-04-15 15:40:50 +08:00
b63d1b992f fix 临时解决循环依赖 2025-04-15 15:13:18 +08:00
6fa4a3ccd5 fix 处理已知问题 2025-04-15 14:46:29 +08:00
5c0e8584da fix 包含无时长数据 2025-04-14 14:37:52 +08:00
7873b780f8 fix 补充提醒 2025-04-14 10:01:26 +08:00
f69e8de2b4 fix . 2025-04-11 20:56:03 +08:00
7f086cb5da fix issoftdelete 2025-04-11 20:43:17 +08:00
f4ebc36aa5 fix 优先级调整 2025-04-11 15:37:00 +08:00
aa7c6d6144 fix 数量调整 2025-04-09 13:46:55 +08:00
7c123ce792 fix . 2025-04-08 16:53:39 +08:00
fde99b1352 add . 2025-04-08 16:52:10 +08:00
13f8747e6d add tenantId 2025-04-08 16:50:04 +08:00
9d5ee433f3 fix 重置任务同时修改version 2025-04-08 15:19:15 +08:00
1e929a2774 fix dingtalk接收人数问题 2025-04-08 14:52:51 +08:00
f84dee5716 fix 优化网格查询 2025-04-08 14:16:33 +08:00
5ae0f55c67 add 根据厂区获取人员接口 2025-04-08 10:01:27 +08:00
3333ee2b84 fix 每30分钟同步一次部门 2025-04-08 09:41:55 +08:00
258b5becfa add Count,Alias 2025-04-07 17:11:40 +08:00
ea22977a55 fix 参数控制 2025-04-07 10:36:47 +08:00
0b97d70f0e add MaxConsecutiveLimitCount 2025-04-07 10:33:14 +08:00
87b4c097f1 fix 处理已知问题 2025-04-07 09:47:41 +08:00
fbbadec338 fix 字段补充 2025-04-03 14:34:50 +08:00
24f6f1f535 fix model转换 2025-04-03 11:43:11 +08:00
ef93e5bd66 feat 网格所有记录 2025-04-03 11:09:32 +08:00
9de266be19 fix 移除别名 2025-04-03 10:46:35 +08:00
f67646036d fix . 2025-04-03 10:39:46 +08:00
e3ac984edc fix debug宏问题 2025-04-03 10:34:02 +08:00
4595aa3a05 fix registry表只下载一次 2025-04-02 17:24:29 +08:00
f227665aed fix 移除brand查询 2025-04-02 17:23:36 +08:00
a4139f0c2f fix 类型过滤 2025-04-02 15:22:55 +08:00
2c67fda9a6 fix 手动添加isDeleted 2025-04-02 15:01:09 +08:00
cbe0c583b4 fix 补充被分配人校验 2025-03-28 16:03:38 +08:00
01944560c1 fix 日志修改 2025-03-28 15:20:11 +08:00
4f09d432d8 add . 2025-03-27 14:41:51 +08:00
fa0a051047 fix 手动添加软删除 2025-03-27 14:41:41 +08:00
3592e4565e add 增加WorkGridCode优先使用 2025-03-27 10:39:43 +08:00
f6b04b6ee1 fix . 2025-03-26 21:08:46 +08:00
f89699daf0 fix 编辑中增加网格长修改 2025-03-26 15:59:26 +08:00
fe807d609b fix 增加设备类型 2025-03-25 16:34:37 +08:00
e141863d2d fix 外包,访客只允许下发门禁 2025-03-25 16:21:01 +08:00
a13fce6072 fix orderbyDesc 2025-03-25 16:09:37 +08:00
c6c9a9a1cd fix 映射转换 2025-03-25 11:30:00 +08:00
12340b38e8 log . 2025-03-25 11:09:06 +08:00
c6ad50c783 add 操作人 2025-03-25 10:48:20 +08:00
c6bc8bf619 fix . 2025-03-24 11:08:04 +08:00
11a8102f94 add 排班操作通知 2025-03-24 10:54:06 +08:00
d943f2e813 fix . 2025-03-21 15:44:53 +08:00
7333365585 fix 参数错误问题 2025-03-21 14:59:00 +08:00
7890d0643f fix 转换. 2025-03-21 14:50:53 +08:00
b62b2c84c1 fix . 2025-03-21 14:42:42 +08:00
d0dc01ebb9 fix 描述处理 2025-03-21 14:38:20 +08:00
2f52cf1ac1 fix 网格增加最大用户数设置 2025-03-21 14:34:04 +08:00
2417088352 fix . 2025-03-21 13:05:12 +08:00
38fbfbf983 fix 统一逻辑处理 2025-03-21 12:53:53 +08:00
f26147c9f7 fix . 2025-03-21 11:27:53 +08:00
a1b2666d0b fix 数据过滤问题 2025-03-21 10:47:56 +08:00
e6dd90617c fix . 2025-03-21 10:22:59 +08:00
e3cc31ec6a fix 设备人员详情过滤 2025-03-21 10:13:24 +08:00
5a7938c966 fix isDeleted 2025-03-21 10:04:17 +08:00
7013fbf8e5 fix . 2025-03-20 17:51:04 +08:00
7b0dc30ea1 fix 分配增加处理 2025-03-20 17:19:56 +08:00
5b3e6418f6 add 增加人脸对比 2025-03-20 16:18:00 +08:00
22b5041bb2 fix 处理为空userCode导致问题 2025-03-20 15:49:13 +08:00
448292adb2 fix 优化排班 2025-03-19 17:31:22 +08:00
aa56a4d217 fix 增加角色WGZGLY 2025-03-19 16:30:28 +08:00
f6f9f6d91c fix 下发任务10限制 2025-03-19 14:35:34 +08:00
88e6ce8bc2 fix 优化提醒 2025-03-18 18:54:56 +08:00
78547332d9 fix . 2025-03-18 14:02:25 +08:00
5cb5d9cf8f fix 访客信息证件号,手机号隐藏 2025-03-18 12:03:21 +08:00
0ad2c8e379 fix 内部人员申请门岗错误提醒优化 2025-03-18 10:01:45 +08:00
70bc7081fb fix ignoreTenant 2025-03-17 16:05:09 +08:00
87b547a8bf fix 接口AllowAnonymous 2025-03-17 15:51:13 +08:00
01d22a2056 fix 增加状态描述 2025-03-17 14:32:54 +08:00
ab2a36e708 fix 逻辑增加判断 2025-03-17 13:53:10 +08:00
e22672751c fix 增加isError显示 2025-03-17 12:05:31 +08:00
57f111aaa7 fix 记录上传人 2025-03-17 12:01:41 +08:00
9847f76760 fix 匹配字符串问题 2025-03-17 11:55:38 +08:00
f645ce98ec fix 考勤数据忽略权限 2025-03-17 11:41:15 +08:00
47c8292807 fix 消息记录保存日志 2025-03-13 11:18:10 +08:00
aab4dea152 fix 过滤 2025-03-11 11:04:37 +08:00
a2bad07677 fix 调整为face appid 2025-03-10 17:24:43 +08:00
e8b1f8bd3a fix 优化数据分析 2025-03-10 17:18:56 +08:00
9012c45267 fix 修改为list 2025-03-10 09:25:19 +08:00
3787490053 fix 尝试更新ignoreSource 2025-03-10 09:13:52 +08:00
cd687b505a fix 支持证件号搜索人员 2025-03-08 17:51:56 +08:00
b29d4edda9 fix PageIndex问题 2025-03-08 17:50:39 +08:00
d0e62121bc refactor 改用basic服务 2025-03-07 17:14:58 +08:00
0df371d305 edit dockerfile 2025-03-07 16:35:44 +08:00
d4729fe703 fix 优化通行记录判断 2025-03-07 15:37:41 +08:00
732a98f513 fix sqlfunc的bus修改 2025-03-07 12:02:01 +08:00
05260f3d49 fix ValidationResult问题 2025-03-07 10:49:16 +08:00
d90486017e fix 优化排班控制 2025-03-06 17:48:35 +08:00
6a0f448531 fix 优化10天禁止保存问题 2025-03-06 17:07:48 +08:00
532dbf0760 fix 增加数据校验 2025-03-06 17:02:20 +08:00
bf392a7c46 fix 逻辑删除增加,消息通知 2025-03-06 16:49:02 +08:00
7e71884b32 feat 消息推送api 2025-03-06 16:04:08 +08:00
413a3ae77d fix 无数据判断 2025-03-06 16:03:41 +08:00
daf5d12c23 fix . 2025-03-06 15:51:05 +08:00
0ae46edcd3 feat 最大连续排班控制增加 2025-03-06 15:43:39 +08:00
840433847a fix 优化判断 2025-03-06 11:12:11 +08:00
a64823e15b fix 排除电子券和生日券统计处理 2025-03-06 11:03:27 +08:00
8e1208e80e fix 补充日志 2025-03-05 16:26:07 +08:00
74cd78e030 fix isError查询 2025-03-05 16:09:12 +08:00
70259c2bad fix -before处理 2025-03-05 15:52:03 +08:00
2c8007d40d fix 通行记录数据处理isError 2025-03-05 15:47:13 +08:00
639432234f fix 考勤记录上传needUpload重新判断 2025-03-05 14:42:54 +08:00
72f040487a fix . 2025-03-05 12:42:51 +08:00
4573ac55bc Merge remote-tracking branch 'origin/development' into development 2025-03-05 12:39:58 +08:00
692a24198b fix 增加通行记录判断 2025-03-05 12:38:58 +08:00
0e69f7cd4a fix nullable 2025-03-05 12:38:58 +08:00
443c06dc1f fix 逻辑优化 2025-03-05 12:38:58 +08:00
2f32885663 fix 优化操作日志 2025-03-05 12:38:58 +08:00
3e0752d852 add log连接 2025-03-05 12:38:58 +08:00
1d78dac768 add 操作日志 2025-03-05 12:38:58 +08:00
7553868604 fix 同步移除排班数据 2025-03-05 12:38:58 +08:00
a30f4aafcc fix fromquery 2025-03-05 12:38:58 +08:00
b344a84428 fix 移除覆盖式save 2025-03-05 12:38:58 +08:00
045af48abe add 移除人员排班 2025-03-05 12:38:58 +08:00
179075d2eb fix 优化查询 2025-03-05 12:38:58 +08:00
28c77bedbe fix 查看当前网格分页PC 2025-03-05 12:38:58 +08:00
279935fe9a fix name重复校验 2025-03-05 12:38:58 +08:00
59d0fe23fb fix 映射字段补充 2025-03-05 12:38:58 +08:00
25b2d7d1ef fix 表字段特性处理 2025-03-05 12:38:58 +08:00
4c54d36e54 fix 时间字段映射 2025-03-05 12:38:58 +08:00
19df0242a6 fix get参数问题处理 2025-03-05 12:38:58 +08:00
1dbeefd0ea feat 工作网格 2025-03-05 12:36:50 +08:00
ef59227773 add 考勤分页和补传 2025-03-05 12:35:14 +08:00
4555ddb721 feat 优化消费过程 2025-03-05 12:35:14 +08:00
964e033583 feat tickets 2025-03-05 12:34:29 +08:00
c9df417799 feat 工作网格 2025-03-05 12:33:47 +08:00
66df7b809b fix 数据绑定调整 2025-03-05 12:31:52 +08:00
c300b5b457 fix 访客不可主动登陆验证 2025-03-05 12:31:19 +08:00
6e6578b197 fix 增加通行记录判断 2025-03-05 12:10:47 +08:00
a9ef44f776 fix nullable 2025-03-04 15:05:36 +08:00
860591570e fix 逻辑优化 2025-03-04 15:02:00 +08:00
9f566d016d fix 优化操作日志 2025-03-04 10:27:20 +08:00
045459575a add log连接 2025-03-04 10:13:04 +08:00
7574900cc2 add 操作日志 2025-03-03 18:22:54 +08:00
d07755b9fb fix 同步移除排班数据 2025-03-03 16:40:36 +08:00
1c1b258e84 fix fromquery 2025-03-03 11:32:36 +08:00
d16ce92d63 fix 移除覆盖式save 2025-03-03 10:18:14 +08:00
9dd558b259 add 移除人员排班 2025-03-03 10:01:38 +08:00
537c7c5e85 fix 处理访客上传人脸问题 2025-02-28 17:30:10 +08:00
1b0969d185 fix . 2025-02-27 14:45:05 +08:00
83d815ae4c fix 敏感信息调整 2025-02-27 14:34:39 +08:00
6232ba4683 fix 优化查询 2025-02-26 12:13:47 +08:00
947054acd3 fix 恢复 2025-02-26 10:18:26 +08:00
a8e726c65d fix 临时注释 2025-02-26 10:00:40 +08:00
d5a9cd2568 fix 设备人员详情 2025-02-26 09:40:04 +08:00
040f03262e fix 排除outsource 2025-02-26 09:21:03 +08:00
1669dcbd11 fix 查看当前网格分页PC 2025-02-25 17:46:54 +08:00
ca2f50511f fix name重复校验 2025-02-25 17:31:22 +08:00
8c915f73ce fix 映射字段补充 2025-02-25 17:28:20 +08:00
aa3dd1d893 add assignDeviceCodes-all 2025-02-25 15:05:54 +08:00
491cda9846 fix . 2025-02-25 14:10:38 +08:00
b437e18b1c fix 枚举错误 2025-02-25 14:02:03 +08:00
edbafec06f fix 出差人员筛选问题 2025-02-25 13:55:05 +08:00
0d90d3cc32 fix 表字段特性处理 2025-02-25 11:42:39 +08:00
4a20cf4169 fix 时间字段映射 2025-02-24 15:55:20 +08:00
f2f03e8685 fix get参数问题处理 2025-02-24 14:46:51 +08:00
657aa63d0f Merge remote-tracking branch 'origin/development' into development 2025-02-19 14:50:16 +08:00
3999f8aa20 add 考勤分页和补传 2025-02-19 14:49:14 +08:00
a06dcbef61 feat 优化消费过程 2025-02-19 14:49:14 +08:00
f7b5f7169d feat tickets 2025-02-19 14:49:13 +08:00
3cec230773 feat 工作网格 2025-02-19 14:49:13 +08:00
660dd7c049 fix ignoreTenant 2025-02-19 14:39:18 +08:00
20e5350b49 add 考勤分页和补传 2025-02-19 12:11:13 +08:00
7116b4ca41 Merge branch 'feat-tickets' into development 2025-02-18 16:42:31 +08:00
636874efe4 feat 优化消费过程 2025-02-18 16:41:47 +08:00
03584778e5 feat tickets 2025-02-18 16:41:47 +08:00
d9aa4ff5ef fix 设备单独分配人员控制 2025-02-18 16:35:35 +08:00
fae8a3a6f4 feat 工作网格 2025-02-18 16:10:38 +08:00
cdb557e5a3 add 增加reason字段 2025-02-18 13:54:31 +08:00
a7aa0cc800 fix factories校验 2025-02-17 18:45:12 +08:00
660b3314d5 fix 扫描问题 2025-02-14 17:08:53 +08:00
167995a48e fix . 2025-02-12 14:58:00 +08:00
a3ba973988 fix . 2025-02-12 14:47:28 +08:00
2717941757 fix 逻辑取反 2025-02-12 14:34:26 +08:00
0c7508a4d4 fix . 2025-02-12 14:12:03 +08:00
5a9e1acf5e fix 优化同步factory,workspace 2025-02-12 11:22:21 +08:00
81d9699f0e test . 2025-02-12 11:14:20 +08:00
9f54fe5433 test . 2025-02-11 12:08:43 +08:00
ee0eec2745 fix 老档案数据处理 2025-02-10 11:32:24 +08:00
565692b045 fix birthday nullable 2025-02-08 17:23:40 +08:00
5746649e06 fix sap接口修改为调用jip v1 2025-02-08 17:05:47 +08:00
1ca613a096 fix 排除出差到本基地的人员 2025-02-07 16:51:51 +08:00
cc93121402 fix 排除不可用用人员的设备 2025-02-07 14:32:54 +08:00
8f370899e9 fix 处理已知问题 2025-01-16 14:44:51 +08:00
fe8971de95 fix null操作异常 2025-01-16 12:30:30 +08:00
d817ba03ce fix 时段码数据处理first异常 2025-01-16 11:01:32 +08:00
259cf79b66 fix null异常 2025-01-15 16:14:14 +08:00
8db9861f0e fix 时段码数据错误问题 2025-01-15 15:46:50 +08:00
ed0ead38d1 fix ss 2025-01-14 15:51:55 +08:00
dabfc5acca fix FromQuery 2025-01-14 14:53:58 +08:00
7047869236 fix 用户查询考勤处理 2025-01-14 14:18:48 +08:00
276bfd482c fix 任务来源说明修改 2025-01-14 11:11:47 +08:00
6f2585a646 fix 优化时段下发逻辑 2025-01-14 11:11:31 +08:00
204601cbcd fix 移除后端权限控制 2025-01-14 11:10:55 +08:00
688888c21c feat 独立用户查询考勤接口 2025-01-14 11:08:32 +08:00
fd052020f5 fix 自定义header 2025-01-13 18:02:00 +08:00
889730b7a3 edit sap域名端口 2025-01-13 14:21:33 +08:00
f37c36b5ae fix 优化同步更新处理 2025-01-13 11:39:48 +08:00
3ce23bd07b add FactoryName 2025-01-10 17:42:59 +08:00
9edc5041fa fix 兼容老档案数据 2025-01-10 17:22:16 +08:00
41c560e8c7 refactor 优化,注释 2025-01-10 16:19:49 +08:00
fe6667f602 Merge remote-tracking branch 'origin/development' into development 2025-01-10 13:57:17 +08:00
3cd8a26244 fix 设备组权限逻辑调整 2025-01-10 13:57:10 +08:00
3ed89bf64a fix 可null处理 2025-01-10 13:57:10 +08:00
c573841849 feat 数据权限支持用户组 2025-01-10 13:57:10 +08:00
12dad0b8b4 fix 人员更新异动 2025-01-10 13:56:34 +08:00
4837e7af97 fix 考勤上传增加安全人员名单 2025-01-10 12:03:48 +08:00
d004c60d42 fix 查询优化 2025-01-10 11:25:10 +08:00
c6f3284115 fix 临时调整查询安全白名单 2025-01-10 11:03:35 +08:00
9455812d91 fix 设备组权限逻辑调整 2025-01-10 10:56:06 +08:00
2e6c68a11f fix 查询优化 2025-01-09 17:53:10 +08:00
6b37ffc948 fix 默认值 2025-01-09 17:37:28 +08:00
e2b47773c9 fix 可null处理 2025-01-09 16:30:45 +08:00
212a46dc75 fix 优化内部人员查询 2025-01-09 14:29:39 +08:00
65d29cb7b5 add NeedUpload 2025-01-09 14:23:41 +08:00
c3a9e11fa6 add source 2025-01-09 13:55:29 +08:00
da40fc3a0f fix 权限数据过滤 2025-01-09 12:18:08 +08:00
96d8f494d9 add TenantId 2025-01-09 11:56:24 +08:00
17dc1ddd11 feat 通行记录支持image 2025-01-09 11:19:15 +08:00
ff36e03afc feat 数据权限支持用户组 2025-01-08 19:34:09 +08:00
6f47b93642 add 数据权限 2025-01-08 18:48:06 +08:00
8e5443624e feat 通行记录增加数据权限 2025-01-08 18:45:30 +08:00
d2d07a0d74 fix 外包人员查询部门和备注 2025-01-08 18:36:04 +08:00
135a507adf fix 重复字段问题 2025-01-08 18:19:20 +08:00
03a5421fbe fix 离职查询 2025-01-08 18:03:09 +08:00
e8bb6941d2 fix 排序,查询优化 2025-01-08 17:53:19 +08:00
64e4adf500 fix 优化通信记录查询 2025-01-08 17:41:15 +08:00
a54efe83ad fix 优化needUpload判断 2025-01-08 17:30:01 +08:00
859bac29cc fix 优化考勤上传 2025-01-08 17:22:15 +08:00
ac971b0921 fix 通行记录数据上报处理 2025-01-08 17:04:37 +08:00
93ac332b71 fix . 2025-01-08 16:48:34 +08:00
0df29c092f fix null异常调试 2025-01-08 16:45:36 +08:00
f214468d48 remove 不需要的统计 2025-01-08 16:45:18 +08:00
d4a5362dab fix 优化档案查询 2025-01-08 16:15:08 +08:00
f8a5e9a6c3 fix type映射 2025-01-07 16:26:10 +08:00
dd6f4c688c fix trans处理 2025-01-06 14:33:20 +08:00
0c7ae57041 fix No使用有误 2025-01-06 14:15:54 +08:00
a1db5aac02 Merge branch 'development' 2025-01-06 11:02:03 +08:00
fabc6f9391 fix trans 2025-01-06 11:01:45 +08:00
8b241f9ee0 Merge branch 'development' 2025-01-06 10:58:24 +08:00
a9d284b43c fix 优化批量处理逻辑 2025-01-06 10:57:04 +08:00
a915492d27 feat 处理已知禅道 2025-01-03 17:39:32 +08:00
2c4fcfa491 fix 处理特殊任务 2025-01-03 14:39:34 +08:00
fddf77858e feat 卡类型编辑 2025-01-03 11:56:06 +08:00
d7ab8f27e6 fix 移除在职的任务生成 2025-01-03 09:46:18 +08:00
beba2d19f3 remove CancellationId 2024-12-30 15:06:53 +08:00
940012155e Merge remote-tracking branch 'origin/development' into development 2024-12-30 15:02:16 +08:00
41411b4f2e feat 手动生成权限任务 2024-12-30 15:00:45 +08:00
0f69c56a93 feat 手动上传,手动设置时间范围 2024-12-30 15:00:11 +08:00
e8632b0d49 fix . 2024-12-28 14:41:22 +08:00
a47062b3d8 fix 优化时间查询 2024-12-27 15:50:27 +08:00
c30534e544 log . 2024-12-26 17:04:49 +08:00
5795efc3c4 fix 优化日志 2024-12-26 17:03:24 +08:00
588c1ff0a7 fix -2 2024-12-26 15:47:18 +08:00
fa1d46b197 fix SequenceContainsNoMatchingElement-1 2024-12-26 15:33:43 +08:00
adb9b3a981 fix ssl验证移除 2024-12-26 15:19:59 +08:00
684e9ab16e test . 2024-12-25 15:50:18 +08:00
1d294b6cf6 log 补充 2024-12-25 15:15:30 +08:00
3586a456d2 fix 优化同步速度 2024-12-25 15:10:10 +08:00
27ea53134c fix 恢复 2024-12-25 14:43:52 +08:00
25f8c78340 stop 任务下发 2024-12-25 13:25:14 +08:00
d6e8976ff2 fix devicePermission-unique 2024-12-24 19:41:11 +08:00
303319c0fd test . 2024-12-24 19:22:47 +08:00
60ac6e54e1 test . 2024-12-24 19:12:26 +08:00
06a5096964 test . 2024-12-24 18:55:10 +08:00
81833e88cc fix 权限增加 2024-12-24 17:15:55 +08:00
5990493dd8 fix 初次直接返回qrcode 2024-12-20 12:05:23 +08:00
d48fc5a280 fix 外包人员记录查询type过滤 2024-12-19 16:49:56 +08:00
4ce8672c1e feat 手动生成权限任务 2024-12-19 16:08:56 +08:00
37c52e72c4 feat 手动上传,手动设置时间范围 2024-12-19 15:21:45 +08:00
8c5afcad48 fix 逻辑取反 2024-12-19 15:10:33 +08:00
d30e678629 fix 任务类型有误 2024-12-19 14:54:18 +08:00
a440885294 fix 恢复接口 2024-12-19 11:39:49 +08:00
1b89d8d930 fix 逻辑判断 2024-12-19 10:16:44 +08:00
4ebb5c1520 fix 查询由前端处理 2024-12-18 15:13:35 +08:00
9b16237697 fix 离线数据异常处理 2024-12-18 15:01:40 +08:00
257e7b9ace fix 更新source内容 2024-12-18 14:34:24 +08:00
df299bb019 fix 任务生成描述 2024-12-18 11:53:32 +08:00
7cfd0b7365 Merge remote-tracking branch 'origin/development' into development 2024-12-17 17:48:22 +08:00
2a49266851 feat 访客强制离场,更新照片 2024-12-17 17:48:16 +08:00
f25deabed6 fix deviceRegister修复 2024-12-17 17:47:46 +08:00
e18d0b0697 fix 数据处理增加条件 2024-12-17 16:55:25 +08:00
7a3c5ec2f8 fix 调整tenantId为空引起上传失败 2024-12-17 14:10:07 +08:00
b7fa470fc3 fix 厂区 2024-12-17 10:28:09 +08:00
4ca4779407 fix 离职处理 2024-12-16 17:49:20 +08:00
3e6ade36f0 feat 访客强制离场,更新照片 2024-12-16 17:08:33 +08:00
7d5a63625a fix 访客预约申请查询 2024-12-16 14:21:33 +08:00
ae2dca8874 fix QuerySetting null 2024-12-16 11:13:34 +08:00
Kurris
f7b28440b7 fix 修复已知问题 2024-12-15 20:49:12 +08:00
d3dbff9248 fix 人员离职数据处理 2024-12-13 17:30:14 +08:00
d1408e5946 fix 处理离职人员 2024-12-13 17:18:17 +08:00
34bdb9381c Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-12-13 16:32:36 +08:00
a33f86969b fix 修复已知问题 2024-12-13 16:32:27 +08:00
02a2971256 feat 权限重置 2024-12-13 16:32:27 +08:00
e32a7aaf3a fix 分组查询处理 2024-12-13 16:32:26 +08:00
0cc0277e7f fix 中文描述转换 2024-12-13 16:32:26 +08:00
9f63d4f938 fix 查询人员权限 2024-12-13 16:32:26 +08:00
5103c5adbb fix 简化代码 2024-12-13 16:32:26 +08:00
57e4028880 fix 用户组分配问题 2024-12-13 16:32:26 +08:00
fc1a1eee7a fix 优化错误数据分配 2024-12-13 16:32:26 +08:00
53a88e8b10 fix 设备组移除设备问题 2024-12-13 16:32:26 +08:00
41be03fb12 fix 无差异数据持久化 2024-12-13 16:32:26 +08:00
0aa476bcf3 fix 引用更新 2024-12-13 16:32:26 +08:00
4311d62ca2 fix 设备组差异 2024-12-13 16:32:26 +08:00
13f00c38c4 fix analyze数据显示问题 2024-12-13 16:32:26 +08:00
dfcf66488d fix 用户组操作触发权限 2024-12-13 16:32:26 +08:00
eb7c4bd7c0 fix 逻辑调整 2024-12-13 16:32:26 +08:00
7820733a3a fix 数据权限分组问题调整 2024-12-13 16:32:26 +08:00
577541b453 fix 设备分组权限标记 2024-12-13 16:32:26 +08:00
04eb2dab31 fix 权限数据优化 2024-12-13 16:32:26 +08:00
aa49e131a9 fix 返回具体新增和删除数据 2024-12-13 16:32:26 +08:00
0e51dbd9db fix tenant分配移除外部人员判断 2024-12-13 16:32:26 +08:00
297aa63eb9 feat 优化权限完成 2024-12-13 16:32:26 +08:00
2d1191e125 fix 权限任务生成优化 2024-12-13 16:32:26 +08:00
1ef1a55c6a fix 修复已知问题 2024-12-13 16:31:04 +08:00
e13e5cfc6f feat 权限重置 2024-12-12 18:45:02 +08:00
1dc3172255 fix 分组查询处理 2024-12-12 17:28:41 +08:00
342b8ca0e7 fix 中文描述转换 2024-12-12 17:14:46 +08:00
37ca88c6f9 fix 查询人员权限 2024-12-12 16:30:43 +08:00
3e08b63cbf fix internal 2024-12-12 15:54:40 +08:00
3a6aa8ea0f fix 简化代码 2024-12-12 11:54:18 +08:00
6684f07925 fix 用户组分配问题 2024-12-11 18:11:37 +08:00
b070d0ea58 fix 优化错误数据分配 2024-12-11 17:42:49 +08:00
fcbb7b4fc2 fix 设备组移除设备问题 2024-12-11 17:17:08 +08:00
7f71de803a fix 无差异数据持久化 2024-12-11 16:12:33 +08:00
cbf9a496a9 fix 引用更新 2024-12-11 16:05:52 +08:00
c1a0293993 fix 设备组差异 2024-12-11 15:54:02 +08:00
4e47986e25 fix analyze数据显示问题 2024-12-11 14:11:50 +08:00
403098b3e1 fix 用户组操作触发权限 2024-12-11 13:56:19 +08:00
581a813344 fix 逻辑调整 2024-12-11 00:30:25 +08:00
cae280218e fix logError ex 2024-12-10 22:21:28 +08:00
5843a4a2c8 fix 数据权限分组问题调整 2024-12-10 19:15:28 +08:00
427a38eba4 fix 设备分组权限标记 2024-12-10 19:05:47 +08:00
d44a2c5abb fix 权限数据优化 2024-12-10 19:04:42 +08:00
b9c853c96f fix 返回具体新增和删除数据 2024-12-10 17:45:29 +08:00
e492e3382c fix tenant分配移除外部人员判断 2024-12-10 17:33:56 +08:00
fba9ae7cce feat 优化权限完成 2024-12-10 17:30:39 +08:00
010eae6bd7 fix 权限任务生成优化 2024-12-09 18:32:09 +08:00
b54880db8c fix null异常问题 2024-12-07 10:46:53 +08:00
d4c157c1a3 fix 逻辑优化 2024-12-07 10:41:08 +08:00
b9cbf1f99a fix 判断设备号是否存在进行下发和移除处理 2024-12-07 09:56:06 +08:00
9a11e80bb3 test 2 2024-12-06 17:20:45 +08:00
6514401a3c fix 优化出差任务生成 2024-12-06 12:59:37 +08:00
9764740030 fix 优化异常处理 2024-12-06 11:38:28 +08:00
e66d0059df fix 部门权限配置修改 2024-12-06 11:23:25 +08:00
1534d15526 fix 映射字段 2024-12-05 13:44:29 +08:00
dbf802c0df fix 结构体问题 2024-12-05 13:44:03 +08:00
7e660dcf44 fix sql逻辑处理替换 2024-12-04 15:54:26 +08:00
0cc7a437d3 fix 车间进入逻辑调整 2024-12-04 15:46:01 +08:00
f91bedfa5c fix 重复数据下发处理 2024-12-04 15:16:54 +08:00
a67ac1b4d9 fix department值问题 2024-12-03 22:42:57 +08:00
74491cb88e fix 类型有误 2024-12-03 22:34:54 +08:00
7d8805dfa5 fix 优化department--device/deviceGroup 2024-12-03 21:53:08 +08:00
60a559b1cb fix 优化tenant--deviceGroup 2024-12-03 21:16:46 +08:00
49f941617f test ts 2024-12-03 18:27:07 +08:00
9b2a96684b test . 2024-12-03 17:47:00 +08:00
41f22f2522 test ts 2024-12-03 17:35:33 +08:00
8c3e37e1c3 test ts 2024-12-03 17:24:29 +08:00
c6a02cdca3 fix 开启多线程 2024-12-03 16:37:13 +08:00
3c39f39f4b fix 优化任务生成 2024-12-03 10:57:35 +08:00
0fee83ba17 fix 增加ignore处理 2024-12-02 17:50:42 +08:00
aaeb565f84 fix 使用ArrivedTime 2024-12-01 14:29:40 +08:00
9d398791ed fix 处理上传照片url问题 2024-12-01 14:25:39 +08:00
8e14e625e8 fix 时间查询逻辑调整 2024-12-01 14:17:11 +08:00
39652a12f1 fix orderby数据排序 2024-12-01 13:08:00 +08:00
cbbb4b5c1c fix 索引优化 2024-12-01 13:00:27 +08:00
f93bd5abca fix 时间处理 2024-11-30 17:09:16 +08:00
0894680f5d fix 并发开始配置 2024-11-30 17:04:14 +08:00
832cb14330 fix 同步触发判断 2024-11-30 16:06:34 +08:00
d23c9a5fe9 fix 由token显示当前拥有的厂区权限 2024-11-29 17:17:11 +08:00
e5286bd773 fix 访客当天查询时间范围 2024-11-29 16:42:07 +08:00
6a9e2822a1 fix excel导入生成权限和任务 2024-11-29 16:17:00 +08:00
e96c9c1ee1 fix 获取tenants的权限处理 2024-11-29 12:43:56 +08:00
085999249c fix 0天不处理外包自动离职 2024-11-29 12:21:55 +08:00
226c5d6891 fix 时间范围调整 2024-11-29 12:16:43 +08:00
441a061f78 fix 访客查询优化 2024-11-29 12:04:51 +08:00
88f0a9ac9c fix 控制特殊处理 2024-11-28 22:43:38 +08:00
87e27a669e fix 优化按人导入 2024-11-28 22:27:55 +08:00
a405023f5d fix user获取问题 2024-11-28 19:41:06 +08:00
9b32ec28db fix 移除并发 2024-11-28 19:12:52 +08:00
c653c8d453 fix 并发线程数由系统处理 2024-11-28 16:03:42 +08:00
8f5f651dde fix 日志查询优化 2024-11-28 15:38:27 +08:00
971ef87957 fix 超时设置 2024-11-28 14:57:39 +08:00
2004035d9b fix 同步人员回复 2024-11-28 14:33:15 +08:00
2e6e334b23 fix 设备不存在判断 2024-11-27 19:26:27 +08:00
8c8eb5eb7e fix 修补消费时重算 2024-11-27 18:28:39 +08:00
284437c6a6 update remotecall and feat outsource自动离职 2024-11-27 16:50:39 +08:00
e67351d2fa fix 查询匹配字段问题 2024-11-27 12:10:26 +08:00
1506716a2b refactor 不取count 2024-11-26 17:07:11 +08:00
7d76fc59ff fix 日期范围 2024-11-26 17:02:11 +08:00
73dd0f9765 fix enqueue任务执行 2024-11-26 16:42:52 +08:00
b0eb954b43 remove 无用代码 2024-11-26 16:42:39 +08:00
50d7be435c update remotecall 2024-11-26 16:20:59 +08:00
1f273986e0 fix jip token 2024-11-26 16:06:59 +08:00
b1292e4653 test . 2024-11-26 15:56:13 +08:00
c024834af2 remove . 2024-11-26 15:26:40 +08:00
623a5c4e49 refactor 优化代码 2024-11-26 15:26:12 +08:00
a32910f0d9 fix 别名 2024-11-25 18:03:47 +08:00
bfa62b4903 fix 外包查询优化 2024-11-25 18:01:33 +08:00
608b7915c7 fix . 2024-11-25 13:45:22 +08:00
fc430d71be fix 优化查询 2024-11-25 12:30:36 +08:00
1ef6585a53 fix 索引命中问题 2024-11-25 12:21:33 +08:00
9e337b90cd fix . 2024-11-25 12:10:54 +08:00
f67b906ea0 Merge remote-tracking branch 'origin/master' 2024-11-25 12:05:14 +08:00
f312db638c fix . 2024-11-25 12:05:10 +08:00
deaf4b0257 fix . 2024-11-25 12:04:39 +08:00
f49404f938 fix 临时调整代码 2024-11-25 11:58:03 +08:00
bbaf7aa3be fix 优化子查询问题 2024-11-25 11:40:56 +08:00
ab8781a6d9 fix 就餐人员列表恢复 2024-11-22 15:33:16 +08:00
405acce916 fix 二维码校验设备权限 2024-11-22 15:20:49 +08:00
39257b0825 fix 访客summary 2024-11-22 10:57:30 +08:00
bfa38c9c3b fix 退款重算,访客数据过滤 2024-11-22 10:53:44 +08:00
76f1103e5b fix 获取设备读取记录配置需IgnoreTenant 2024-11-22 10:39:33 +08:00
a7ca9817b1 fix 支持搜索name,idno,no 2024-11-22 10:27:27 +08:00
3dd6e27128 fix 增加可查询所有door记录 2024-11-21 17:22:13 +08:00
471df07386 feat 门岗申请记录列表 2024-11-21 15:48:04 +08:00
484be10fde fix 消费恢复为余额表 2024-11-21 10:27:08 +08:00
2a97798118 fix 优化数据range,优化400提醒 2024-11-20 10:54:49 +08:00
c371e2a8e5 fix 查询优化 2024-11-19 14:12:19 +08:00
7934ef5845 fix 增加部署点位返回 2024-11-19 09:29:13 +08:00
fdd70ec871 fix 停用face上传 2024-11-18 13:31:37 +08:00
93764dd9a3 fix 查询优化 2024-11-18 13:31:17 +08:00
a2037e7eef fix 恢复now 2024-11-18 11:25:56 +08:00
5033d895ea fix 启动拉取数据,避免dblock 2024-11-14 17:53:20 +08:00
2c6ac44782 fix 优化null字段问题 2024-11-14 16:42:36 +08:00
a07ab8330e fix 请求客户端修改 2024-11-14 16:24:21 +08:00
96a1cdb6c5 fix 移除无效代码 2024-11-14 15:49:06 +08:00
31f406d6d3 Merge branch 'feat-wallet' into development 2024-11-14 15:44:01 +08:00
8cb42d81d6 fix 优化权限分析 2024-11-14 15:40:47 +08:00
c6593f93bc fix 优化健康检查,数据同步 2024-11-14 15:32:52 +08:00
ecf98fc1d3 fix 月份汇总 2024-11-14 15:15:23 +08:00
5ddfbb680f fix 展示入账数据 2024-11-14 15:10:45 +08:00
cdd3e73636 fix 优化查询余额 2024-11-14 14:59:12 +08:00
dc9a160e05 fix 用户查询消费根据钱包 2024-11-14 14:46:34 +08:00
5fd97fbd73 fix 用户信息区分厂区名称和编码 2024-11-14 14:30:13 +08:00
51b0d4a7bb fix 余额查询跨厂区 2024-11-14 14:14:47 +08:00
b627a66254 fix 包含厂区处理 2024-11-13 16:14:40 +08:00
3a47580441 fix 就餐人员列表查询根据消费记录显示 2024-11-13 16:11:23 +08:00
ee8784195f fix 用户消费明细状态处理 2024-11-13 15:41:15 +08:00
0e38406dd5 test . 2024-11-12 17:40:35 +08:00
25e3f99809 test 获取人员设备权限 2024-11-12 17:30:02 +08:00
e2bb6d5d0e fix 查询条件调整 2024-11-12 16:19:31 +08:00
74912c2efc feat 钱包和钱包余额查询 2024-11-12 16:08:49 +08:00
1503784f50 fix 查询和list数据展示 2024-11-12 13:49:41 +08:00
a3da812cde feat 餐券余额查询 2024-11-12 11:26:41 +08:00
1a04513489 feat 用户消费明细显示已退款 2024-11-12 10:39:55 +08:00
1a0ba28249 fix 多钱包调整 2024-11-08 16:36:10 +08:00
59fdf00df3 feat 查询消费者厂区 2024-11-08 16:32:33 +08:00
e1fecb89e0 fix 名称转换 2024-11-08 14:15:42 +08:00
83ea3d7093 feat 通行记录支持外包查询 2024-11-08 11:54:25 +08:00
82666e5d19 fix 访客区域为空跳过处理 2024-11-07 16:02:43 +08:00
36bfd2e8f6 Merge remote-tracking branch 'origin/feat-wallet' into feat-wallet 2024-11-07 13:53:49 +08:00
743ab5b313 fix 查询问题 2024-11-07 13:52:40 +08:00
3d8f9e1955 fix gainfomeal处理 2024-11-07 13:52:40 +08:00
e322d7e179 feat middleHealthz 2024-11-07 13:52:40 +08:00
0e0c5db6b8 add 消费处理完成 2024-11-07 13:52:40 +08:00
8cf195eb77 fix 参数配置方法修改 2024-11-07 13:51:43 +08:00
7ce43ee45a fix 增加BusinessPlace 2024-11-06 16:06:44 +08:00
dd6b79e7f6 fix 字段匹配 2024-11-06 15:00:39 +08:00
79fdcdcd62 fix 仅查询door 2024-11-06 14:53:06 +08:00
2cb146dd93 feat 余额明细 2024-11-06 14:52:54 +08:00
57eebb4924 fix [IgnoreTenant] 2024-11-06 13:55:19 +08:00
95de9a0b92 fix 优化查询数据范围 2024-11-06 11:15:56 +08:00
14b05b585d fix 返回code和name 2024-10-31 19:11:44 +08:00
c8dd87ea22 fix 临时关闭控制 2024-10-31 13:50:10 +08:00
73fa5691fc fix 时间判断 2024-10-31 12:30:14 +08:00
390452f57b feat 获取设备上传的时间 2024-10-29 13:55:34 +08:00
7ab7c61a29 fix 查询问题 2024-10-29 12:03:19 +08:00
43189e1e57 fix gainfomeal处理 2024-10-28 17:37:13 +08:00
7f4950090e fix 兼容老系统设备记录 2024-10-28 16:51:15 +08:00
727e49f72e feat middleHealthz 2024-10-28 16:28:31 +08:00
71b563546c rename . 2024-10-28 10:27:16 +08:00
5cf11e5128 add 消费处理完成 2024-10-25 17:10:18 +08:00
043221c9ea fix 增加过滤 2024-10-25 16:50:10 +08:00
7d322ef5f6 fix 参数配置方法修改 2024-10-24 16:51:17 +08:00
d1c40a7994 Merge remote-tracking branch 'origin/development' into development 2024-10-24 16:05:20 +08:00
72d95c397d fix 优化人脸同步sap 2024-10-24 16:05:08 +08:00
05928bf543 fix Dockerfile重置 2024-10-24 16:05:08 +08:00
be68bd414b fix common合并 2024-10-24 16:05:08 +08:00
b2a949cf7a fix 调整代码位置处理 2024-10-24 15:55:50 +08:00
3dbd8f3e35 fix 重算排除电子餐券 2024-10-23 13:28:25 +08:00
8f928b8196 fix 优化人脸同步sap 2024-10-21 16:14:43 +08:00
a8e7b799e1 Merge remote-tracking branch 'origin/development' into development 2024-10-21 15:28:35 +08:00
020024f35b fix Dockerfile重置 2024-10-21 15:28:27 +08:00
8b337d3323 fix common合并 2024-10-21 15:28:27 +08:00
d400b33ea9 fix 中文工号禁止导入,过滤已导入人员 2024-10-21 15:28:10 +08:00
b0c97fb9bb fix 时间判断 2024-10-19 14:48:25 +08:00
bcd48ca35c fix 检测不存在 2024-10-19 14:17:12 +08:00
f17fb62a72 fix 校验补充 2024-10-18 18:42:23 +08:00
a24cade558 fix 查询问题 2024-10-18 18:27:05 +08:00
dc194ff05d fix 状态更新,时间判断 2024-10-18 18:25:16 +08:00
1b486f61ad fix 查询匹配错误 2024-10-18 18:15:46 +08:00
9218fc5aff fix 补充时间校验 2024-10-18 18:00:07 +08:00
f508aa0df5 fix 处理查询问题 2024-10-18 17:55:36 +08:00
48089940a3 fix 处理都不选预约类型错误 2024-10-18 17:16:46 +08:00
0bf38e26c3 fix index冲突 2024-10-18 17:05:22 +08:00
c374d12935 remove 移除海宁餐补处理 2024-10-18 11:52:17 +08:00
323b7c3f5d remove 移除海宁消费代码 2024-10-18 11:50:17 +08:00
5d97795cfe fix 优化获取设备状态数据 2024-10-18 11:42:36 +08:00
153a8f9341 fix 修复电子餐券退款问题 2024-10-18 11:07:15 +08:00
1d778f4d80 fix 补充factory字段 2024-10-17 17:11:33 +08:00
bd28b24992 fix 海康增加数据获取 2024-10-17 17:07:22 +08:00
b1347fbe18 fix 访客预约自动化处理 2024-10-17 15:57:13 +08:00
360eab9882 fix 人脸检测设置返回默认值 2024-10-16 10:30:04 +08:00
aa615b1ac1 fix 修复外包上传问题 2024-10-16 10:06:26 +08:00
cde02acf06 fix Dockerfile重置 2024-10-14 14:48:49 +08:00
f2302c1870 fix common合并 2024-10-14 14:46:54 +08:00
a70c760a5b Merge branch 'development' 2024-10-14 11:34:20 +08:00
247e0156f9 fix 设备人员详情处理 2024-10-14 11:27:57 +08:00
6afe09baa8 fix 通过设备查询人员详情 2024-10-14 11:16:57 +08:00
61bd242c96 fix 部门分配问题处理 2024-10-14 11:08:52 +08:00
0ef687fa60 fix list字段处理 2024-10-14 10:23:03 +08:00
53713902fe feai 北明接口 2024-10-14 09:48:57 +08:00
0fea33454c fix 调整查询逻辑 2024-10-12 14:37:09 +08:00
216f510389 fix 优化summary 2024-10-11 18:25:03 +08:00
b412df0f87 fix 多重名No映射问题 2024-10-11 16:11:07 +08:00
c4ec53c6d7 fix 明细接口开放 2024-10-11 15:30:25 +08:00
e4946d7351 fix AsAppointment 2024-10-11 15:12:35 +08:00
aeffa95a96 fix 设备组修改 2024-10-11 11:55:00 +08:00
fd41d097df Merge branch 'master' into development 2024-10-10 18:29:21 +08:00
0c249a8e04 fix 部门分配问题 2024-10-10 18:29:09 +08:00
33dbc33836 fix 访客预约代码调整 2024-10-10 18:02:10 +08:00
cce6785863 fix 已知问题 2024-10-10 12:28:20 +08:00
4af590209f add 访客 2024-10-10 12:27:37 +08:00
981bcc38e2 fix 电子餐券余额查询问题 2024-10-09 11:10:37 +08:00
4497027fee fix 恢复查询 2024-09-29 17:02:54 +08:00
03a5c80e79 fix 调整到5秒 2024-09-27 15:14:00 +08:00
540ac8a759 fix 调整到3秒时效 2024-09-27 15:09:40 +08:00
5ca68188b7 fix 移除tokensource 2024-09-27 14:57:35 +08:00
1c2b19225c fix werk显示 2024-09-25 21:36:52 +08:00
57c1fd5a76 fix 出差人员只允许对接人查看 2024-09-24 22:54:12 +08:00
9775052ab2 fix 消费明细支持多选营业点/餐补部门名称处理 2024-09-24 22:53:25 +08:00
17e494f5c8 fix 移除电子餐券二维码时效 2024-09-20 19:45:24 +08:00
33e2db3398 fix 电子餐券超市禁止 2024-09-19 13:55:12 +08:00
3c921ef1c9 fix . 2024-09-19 11:26:04 +08:00
17365b81e0 fix log 2024-09-19 11:23:20 +08:00
8e6eb516ad fix 移除测试代码 2024-09-19 10:40:08 +08:00
7f77a6339b fix dockerfile 2024-09-18 17:22:20 +08:00
4ef77b7f73 Merge branch 'development' 2024-09-18 16:09:05 +08:00
8535d7deda fix 实体检验调整 2024-09-11 14:28:33 +08:00
1b9591936e fix 实体校验调整 2024-09-11 14:19:23 +08:00
57ec12a1d3 fix 增加字段IsEnterDoorArea 2024-09-11 10:40:26 +08:00
e050d56496 fix 临时移除社保照片判断 2024-09-10 12:07:32 +08:00
5986a95409 feat 获取考勤数据接口 2024-09-09 18:00:31 +08:00
006e638938 fix 根据编码判断区域 2024-09-09 14:49:28 +08:00
b3fe957a1b fix 数据展示处理 2024-09-09 11:15:17 +08:00
5ff07e61ef fix 结构变更 2024-09-05 16:53:09 +08:00
8330cb7095 fix 逻辑调整 2024-09-05 15:46:27 +08:00
4b1d1520b8 fix doc生成 2024-09-05 12:45:12 +08:00
beded7ad40 fix 请求参数变更 2024-09-05 12:09:36 +08:00
beefd78b01 fix 认识范围展示 2024-09-05 11:17:38 +08:00
c3012e3533 Merge remote-tracking branch 'origin/development' into development 2024-09-05 11:12:30 +08:00
86323cbcb1 fix 优化提醒 2024-09-05 11:12:17 +08:00
6639b23075 fix 移除source判断 2024-09-05 11:12:17 +08:00
7237a7ad23 fix 人员同步离职处理 2024-09-04 11:16:44 +08:00
2eee800d92 fix 优化提醒 2024-09-03 12:16:44 +08:00
192c6f80af fix 移除source判断 2024-09-03 11:57:22 +08:00
49687c0f50 fix 表更新 2024-09-03 10:04:03 +08:00
e92cad5fbd fix 移除external判断 2024-08-30 14:59:50 +08:00
16fd31d677 fix 查询离职人员时间段 2024-08-30 10:41:05 +08:00
8af8ce4a3d fix 移除尖山单独处理 2024-08-29 22:17:34 +08:00
5b55ac01dd fix 提交已经问题处理 2024-08-29 18:28:16 +08:00
275e6e333d fix face数据同步 2024-08-29 18:20:17 +08:00
cd3f12c642 fix 临时移除 2024-08-29 16:32:23 +08:00
f5eb1dc330 fix 数据格式处理 2024-08-28 21:05:36 +08:00
b71095a38d fix 重置权限的tenantId所属问题 2024-08-28 17:51:12 +08:00
d6fee46081 fix 兼容出差 2024-08-28 17:29:17 +08:00
bb849c8638 fix 权限生成处理 2024-08-28 16:54:36 +08:00
fcee0e365c fix 处理无任务返回 2024-08-28 16:38:08 +08:00
1fb3c5f03f fix 配置请求超时时间,增加文本提醒 2024-08-28 16:04:28 +08:00
01ecfc2a70 fix 优化处理逻辑 2024-08-28 16:03:54 +08:00
a229f47de4 fix . 2024-08-28 12:26:34 +08:00
5aacbe9e8b fix 等待时间调整 2024-08-28 11:57:10 +08:00
bfc14604b3 fix 增加上传完成提醒 2024-08-28 11:54:54 +08:00
c9938bd258 fix 支持离线查询 2024-08-28 11:50:30 +08:00
c850519b63 fix 优化查询 2024-08-27 19:10:52 +08:00
82c1110449 fix 查询处理 2024-08-27 18:17:56 +08:00
482a07ac08 fix sql生成结构 2024-08-27 17:11:18 +08:00
1e855c3ec9 fix 人脸检测问题,数据查询 2024-08-27 16:23:05 +08:00
00238dd781 fix 时间处理问题,主动写入厂区 2024-08-27 15:06:29 +08:00
21e8afdb0e fix log补充 2024-08-27 14:56:06 +08:00
b269ce034b fix 临时注释慢查询 2024-08-27 14:48:43 +08:00
4cb7d419de fix 处理已知问题 2024-08-26 16:11:32 +08:00
7493e5a3a3 feat 人脸检测 2024-08-26 15:08:30 +08:00
f80d36c9b2 fix 集团数据返回所有类型 2024-08-23 14:50:56 +08:00
db2ba56586 fix . 2024-08-22 19:27:05 +08:00
3e8f5da91d fix . 2024-08-22 19:14:58 +08:00
c6b732ab96 fix fromquery 2024-08-22 15:47:03 +08:00
359c7af1c6 fix 重算离职人员 2024-08-22 15:45:32 +08:00
e70abaa48c fix test recalc 2024-08-22 15:28:11 +08:00
5f245c82ec fix 退款数据标识 2024-08-21 18:19:48 +08:00
ac77a92c12 fix 移除No 2024-08-21 16:05:40 +08:00
dd049b44b1 fix 错误提醒抛出 2024-08-21 14:53:30 +08:00
b43fd83b89 fix 存在离线不下载 2024-08-21 14:44:41 +08:00
04586bbc12 fix init table 2024-08-21 14:36:00 +08:00
14be26868c fix offline token 2024-08-20 15:10:58 +08:00
7d035b8544 fix 快速接口失效 2024-08-20 15:08:01 +08:00
c9af919139 fix 数量log 2024-08-20 13:55:34 +08:00
b9aab32fe8 fix .异常处理 2024-08-20 13:41:30 +08:00
0291a59e2e fix 补充日志输出 2024-08-20 11:45:33 +08:00
637d1da040 feat X-Requested-DeviceIp 2024-08-19 15:08:42 +08:00
9c5d1b558f fix 修复已知问题 2024-08-19 14:17:15 +08:00
e99e7a01ee fix 暂时注释 2024-08-16 22:00:56 +08:00
35584b67b3 Merge remote-tracking branch 'origin/development' into development 2024-08-16 21:59:08 +08:00
9c81406337 fix 查询优化 2024-08-16 21:57:39 +08:00
13beca328d feat 查询档案人员所在的人员分组 2024-08-16 21:57:39 +08:00
8ae685cafb fix 处理设备分组优化 2024-08-16 21:57:39 +08:00
e850af7d80 feat 用户集团消费数据 2024-08-16 21:57:39 +08:00
9124408cdd refactor 优化代码 2024-08-16 21:57:39 +08:00
9e46c26ddf fix 处理已知问题 2024-08-16 21:57:39 +08:00
173ede9222 fix 统计,消费明细 2024-08-16 21:57:39 +08:00
83a6c0e8bb refactor 代码优化 2024-08-16 21:56:57 +08:00
89291c8ea5 feat 电子餐券 2024-08-16 21:56:15 +08:00
7abb0f312b feat 就餐分析,餐次使用金额和人数 2024-08-16 21:54:27 +08:00
7813c83d5d feat 餐次就餐分析 2024-08-16 21:53:35 +08:00
e93102b4cb refactor 代码优化 2024-08-16 21:52:32 +08:00
b5ed24c46a feat 电子餐券 2024-08-16 21:52:01 +08:00
9e9efae3ac feat 就餐分析,餐次使用金额和人数 2024-08-16 21:50:27 +08:00
5f3e28c94d feat 餐次就餐分析 2024-08-16 21:49:47 +08:00
a03bd4252a fix route名称修改 2024-08-16 21:48:28 +08:00
04b57c1ef0 refactor 代码优化 2024-08-16 21:48:28 +08:00
2802f19190 feat 电子餐券 2024-08-16 21:48:28 +08:00
5e46ad94c9 feat 就餐分析,餐次使用金额和人数 2024-08-16 21:48:28 +08:00
87c74588a4 feat 餐次就餐分析 2024-08-16 21:48:28 +08:00
dfa5cc4bfe refactor 代码优化 2024-08-16 21:48:28 +08:00
4f7b984dfc feat 电子餐券 2024-08-16 21:48:28 +08:00
ee86311697 feat 就餐分析,餐次使用金额和人数 2024-08-16 21:48:28 +08:00
2bdf883ad9 feat 餐次就餐分析 2024-08-16 21:48:28 +08:00
c15e545b6d fix 调整访客预约 2024-08-16 21:48:14 +08:00
81fede8764 fix 查询优化 2024-08-16 15:58:25 +08:00
ad47b675b1 feat 查询档案人员所在的人员分组 2024-08-16 15:58:11 +08:00
8fc4464a41 fix 处理设备分组优化 2024-08-16 14:48:26 +08:00
d72fc4a7b1 feat 用户集团消费数据 2024-08-16 14:46:14 +08:00
9b3a4fd0b5 refactor 优化代码 2024-08-16 14:45:50 +08:00
2c216216cd fix 处理已知问题 2024-08-15 17:54:44 +08:00
9685845a21 fix 统计,消费明细 2024-08-15 16:49:50 +08:00
399f89785b Merge remote-tracking branch 'origin/development' into development 2024-08-15 11:41:35 +08:00
fc597c6cb6 fix route名称修改 2024-08-15 11:36:57 +08:00
23d3e1028b refactor 代码优化 2024-08-15 11:36:57 +08:00
96b43876b8 feat 电子餐券 2024-08-15 11:35:56 +08:00
f76052427d feat 就餐分析,餐次使用金额和人数 2024-08-15 11:33:12 +08:00
2394e8a4d2 feat 餐次就餐分析 2024-08-15 11:31:55 +08:00
1c825491df refactor 代码优化 2024-08-15 11:29:32 +08:00
c83ad8bca4 feat 电子餐券 2024-08-15 11:29:32 +08:00
de6640e89e feat 就餐分析,餐次使用金额和人数 2024-08-15 11:29:32 +08:00
9e9368954e feat 餐次就餐分析 2024-08-15 11:29:32 +08:00
eed8fd5752 fix 移除过滤 2024-08-15 10:20:06 +08:00
dd4a94a7cd fix route名称修改 2024-08-14 16:47:12 +08:00
a33474f0c7 Merge remote-tracking branch 'origin/development' into development 2024-08-14 16:45:59 +08:00
fa3fc4e6b4 refactor 代码优化 2024-08-14 16:43:43 +08:00
ad0a97a16d feat 电子餐券 2024-08-14 16:43:43 +08:00
23e4b4e6e7 feat 就餐分析,餐次使用金额和人数 2024-08-14 16:42:59 +08:00
8803be54e9 feat 餐次就餐分析 2024-08-14 16:42:59 +08:00
7b9bd95e1e fix . 2024-08-14 16:35:22 +08:00
e52cf0f37a refactor 代码优化 2024-08-14 15:43:37 +08:00
d26cee1166 fix search 2024-08-14 15:20:24 +08:00
0e8a7e9405 fix 搜索搜索档案人员 2024-08-14 15:15:54 +08:00
827a1077eb feat 电子餐券 2024-08-14 15:07:08 +08:00
8f61ec2072 feat 就餐分析,餐次使用金额和人数 2024-08-13 13:46:06 +08:00
4673b08e70 feat 餐次就餐分析 2024-08-13 10:32:27 +08:00
2d21c14de1 fix abs移除 2024-08-09 20:37:21 +08:00
69372d7a42 fix 查询优化 2024-08-09 20:35:29 +08:00
78ec08ffff fix remove/rename 2024-08-08 18:07:22 +08:00
366af67135 feat 电子餐券 2024-08-08 18:05:32 +08:00
c078ce8830 fix 默认为1写入 2024-08-08 16:40:21 +08:00
aff935f15c fix 离线下载数据问题处理 2024-08-07 22:10:43 +08:00
0a7b551fe0 fix . 2024-08-07 21:54:07 +08:00
ad5656b6f9 fix . 2024-08-07 21:39:11 +08:00
177497ec39 afix . 2024-08-07 21:16:20 +08:00
1638b18ca0 fix 数据量调整 2024-08-07 21:06:05 +08:00
06f4ba2170 fix 减少获取数量 2024-08-07 20:52:40 +08:00
5f6275138b fix 移除条件 2024-08-07 20:13:20 +08:00
1b0bc32bf0 fix 恢复条件 2024-08-07 19:52:07 +08:00
e91e444689 fix 二维码禁止跨厂区消费 2024-08-07 18:15:53 +08:00
270ae7ee6c feat test 2024-08-07 17:26:18 +08:00
3ef330a637 fix 餐补汇总统计 2024-08-07 09:55:36 +08:00
fb312a2f50 fix ignore 2024-08-07 08:41:53 +08:00
908a2ddb4e fix 白名单设置 2024-08-06 21:48:30 +08:00
62d5917695 feat 退款接口 2024-08-06 17:30:39 +08:00
e4d0e327eb fix 增加任务详情返回 2024-08-06 13:58:35 +08:00
2abd983b4e fix 获取部门权限处理 2024-08-06 11:39:23 +08:00
5209c062f8 fix 部门分配权限,人员分析 2024-08-06 11:27:59 +08:00
9728c5f24f fix 处理已知问题 2024-08-05 16:49:37 +08:00
46ec0d75ee fix 外包人员不允许餐饮,放开其他限制 2024-08-05 13:45:02 +08:00
54c06b6630 fix 部门权限处理 2024-08-05 13:36:51 +08:00
ded9ebcbdf fix 获取权限查看移除crossignore 2024-08-05 13:21:36 +08:00
5d50837ba3 fix 数据问题 2024-08-05 10:28:10 +08:00
786e77b50e fix 查询where问题 2024-08-05 10:25:37 +08:00
417593850d fix 恢复接口 2024-08-03 22:20:13 +08:00
932e53e4a2 fix . 2024-08-03 21:50:46 +08:00
9b671a1f8d fix 临时移除条件 2024-08-03 11:49:51 +08:00
c3a0f0b150 fix 路由修改 2024-08-03 11:42:32 +08:00
02acb878dc fix 任务来源 2024-08-03 11:11:06 +08:00
32987e45cb fix qrcode消费逻辑处理 2024-08-02 18:57:00 +08:00
c90a34a900 Merge branch 'refs/heads/master' into development 2024-08-02 15:36:46 +08:00
075c389d3c fix gainfoQrCode 2024-08-02 15:36:38 +08:00
fc6bd54caa fix 返回统计金额 2024-08-01 18:22:18 +08:00
d79051ac75 add 补充 2024-08-01 17:39:20 +08:00
b912cce2c0 feat 设置档案白名单 2024-08-01 17:39:00 +08:00
d4e7929661 feat 厂区配置 2024-08-01 11:25:56 +08:00
077cfa0835 feat 增加时段码卡类型移除 2024-07-31 17:11:35 +08:00
ee045d46ba fix 已知问题 2024-07-31 17:01:47 +08:00
54cbd38b78 fix 时段码分页 2024-07-31 14:57:03 +08:00
26b1e56a20 feat 公开获取营业点 2024-07-31 14:42:37 +08:00
e0770140b4 fix 修复已知问题 2024-07-31 10:15:17 +08:00
e79e7acb97 fix framework 2024-07-26 15:08:55 +08:00
3d899371a1 fix 优化sqlsugarpack 2024-07-25 17:47:25 +08:00
70edac18a3 fix datapermission crosstenant 2024-07-24 15:48:57 +08:00
eb61d96373 fix 移除出差组判断 2024-07-23 11:48:45 +08:00
936836e246 fix 获取跨基地分配部门权限问题 2024-07-22 17:33:40 +08:00
9cd31df6fc feat 外包人员下发配置 2024-07-22 17:24:14 +08:00
d27aa2e007 fix 查询json字段问题 2024-07-22 15:38:27 +08:00
42deb7925e fix merge 2024-07-22 14:43:28 +08:00
ded176ab30 Merge remote-tracking branch 'origin/development' into development 2024-07-22 14:35:18 +08:00
3e24eeb9a9 fix 处理时段星期优化 2024-07-22 14:34:38 +08:00
5733a3907f fix 调整时段码结构 2024-07-22 14:34:38 +08:00
b4459edfc4 fix 时段变更生成下发任务 2024-07-22 14:33:40 +08:00
81582cf58e fix 时段变更生成下发任务 2024-07-22 14:30:46 +08:00
fac83c0922 fix 处理时段星期优化 2024-07-22 14:28:23 +08:00
a48e34f999 fix 调整时段码结构 2024-07-22 14:28:23 +08:00
c7c1bf1ec8 fix 时段变更生成下发任务 2024-07-22 14:28:23 +08:00
7889bcdbba fix 部门权限查询优先使用外部传入字段 2024-07-22 14:24:52 +08:00
36a77cf447 Merge remote-tracking branch 'origin/development' into development 2024-07-22 10:43:14 +08:00
0cc5c538f1 fix 处理时段星期优化 2024-07-22 10:43:08 +08:00
4af6cda8cb fix 调整时段码结构 2024-07-22 10:43:08 +08:00
3c9e3261c8 fix 时段变更生成下发任务 2024-07-22 10:43:08 +08:00
a981baa296 fix 补充过程log 2024-07-20 13:43:07 +08:00
60a8ad695f fix 优化获取最新设备记录 2024-07-20 11:51:36 +08:00
2cab53c8a3 fix 优化注入redis情况 2024-07-20 11:10:47 +08:00
97c4384521 fix 服务端日志 2024-07-19 20:49:40 +08:00
eb186fc81d fix log 2024-07-19 17:34:20 +08:00
900250e4da fix 处理时段星期优化 2024-07-19 17:17:32 +08:00
19f4a168c5 fix 调整时段码结构 2024-07-19 16:10:38 +08:00
0f455ca61d fix 补充日志输出 2024-07-19 15:44:31 +08:00
6b8976cf4a Merge remote-tracking branch 'origin/development' into development 2024-07-19 10:33:58 +08:00
7e0fedda8f fix 时段变更生成下发任务 2024-07-19 10:33:52 +08:00
41a97f48f4 fix 增加createtime字段 2024-07-19 10:33:35 +08:00
5a74190d3c fix 时段变更生成下发任务 2024-07-17 18:37:33 +08:00
613d1f7299 fix 卡类型同步 2024-07-17 18:27:28 +08:00
42e284faa3 fix 补充face config 2024-07-17 17:54:27 +08:00
a5a6c7a515 feat 照片上传sap 2024-07-17 16:48:30 +08:00
aeda215b38 fix 成本日期查询 2024-07-17 11:13:21 +08:00
66c24e2ebe feat 增加密码重置功能 2024-07-17 10:47:06 +08:00
b8708d36f1 Merge remote-tracking branch 'origin/development' into development 2024-07-16 11:54:44 +08:00
ce682409d4 fix 移除无用代码 2024-07-16 11:54:39 +08:00
b697520cb4 feat 时段码增删改查 2024-07-16 11:54:39 +08:00
164c97d8e7 fix 任务分页查询条件增加 2024-07-15 17:12:25 +08:00
6128e9acd2 fix 移除无用代码 2024-07-15 11:25:15 +08:00
c4b638a655 feat 时段码增删改查 2024-07-15 11:00:30 +08:00
2b14396f66 fix 老档案数据状态更新 2024-07-15 10:59:55 +08:00
ba7821796b fix 获取设备支持多factory 2024-07-15 10:52:01 +08:00
979f27ebfa fix 考勤记录过滤识别失败数据 2024-07-12 11:46:40 +08:00
03341bcb1d fix 优化已知问题 2024-07-11 17:46:09 +08:00
8ce7662e42 fix 是否可编辑判断调整 2024-07-11 17:15:32 +08:00
04ea94787c fix 逻辑取反,当前忽略租户操作 2024-07-11 13:52:25 +08:00
a865a7425a fix 分配/获取权限优化 2024-07-11 12:20:41 +08:00
f9a7049c06 fix 分配/获取权限需要根据数据权限处理 2024-07-11 11:20:57 +08:00
ad422e0c5a fix 补充小于等于零不可操作 2024-07-11 10:53:58 +08:00
42ed53cdaa fix 离职就餐人员查询优化 2024-07-11 10:46:22 +08:00
fb40af4f1f Merge remote-tracking branch 'origin/development' into development 2024-07-11 10:00:39 +08:00
71f69c358a fix 当前id判断 2024-07-11 10:00:35 +08:00
d5ed47eb2e fix 优化余额迁移,获取设备权限tenantId 2024-07-11 10:00:05 +08:00
4c66dd9154 Merge remote-tracking branch 'origin/development' into development 2024-07-10 17:15:35 +08:00
e35b51084b fix 当前id判断 2024-07-10 17:15:28 +08:00
e6fbdfa730 fix 查询后删除 2024-07-10 14:57:41 +08:00
d77e924155 fix 优化数据处理 2024-07-10 14:52:24 +08:00
dffc7feac2 fix 外包人员拍照触发下发问题 2024-07-09 15:06:46 +08:00
c5ca376fd3 fix 数据条件修改 2024-07-09 13:38:02 +08:00
1cf90b0181 fix 当前id判断 2024-07-09 11:53:15 +08:00
f79844281d fix 覆盖保存 2024-07-08 14:04:59 +08:00
d1b450471e fix 移除role控制 2024-07-08 13:50:09 +08:00
6f93a8be23 remove roles 2024-07-05 18:49:44 +08:00
15fa834e8e fix tenantId 2024-07-05 18:40:23 +08:00
f8db5f99ba fix . 2024-07-05 18:23:27 +08:00
c42f99dbb7 fix 增加权限 2024-07-05 18:18:54 +08:00
c3dd483d95 fix . 2024-07-05 18:08:33 +08:00
9507785be5 fix open assign 2024-07-05 17:57:05 +08:00
789564fc9e fix 移除type问题 2024-07-05 17:56:24 +08:00
038c8260e8 fix . 2024-07-05 16:55:43 +08:00
48609a2c28 feat 获取我的考勤记录 2024-07-05 16:39:14 +08:00
28f96c59c0 fix . 2024-07-05 16:08:00 +08:00
590ca25ed7 fix . 2024-07-05 15:58:24 +08:00
9f54fc101d fix 移除无效判断,api 2024-07-05 15:56:12 +08:00
78963d8763 update datapermission 2024-07-05 15:44:13 +08:00
2401ab2c4e fix 处理已知查询问题 2024-07-05 15:38:19 +08:00
c178499470 fix 已知数据查询 2024-07-05 15:06:26 +08:00
e9e72b0af7 fix 查询过滤 2024-07-05 14:11:43 +08:00
24f7598d8d fix 移除无用api 2024-07-05 13:30:54 +08:00
8c4aaee32a fix 出差人员任务生成 2024-07-05 11:59:22 +08:00
47f1e82a15 Merge remote-tracking branch 'origin/development' into development 2024-07-04 18:38:47 +08:00
9618c3f772 fix . 2024-07-04 18:38:39 +08:00
6c4ad11c28 fix 优化出差组生成 2024-07-04 18:38:39 +08:00
870b848203 fix 自动创建出差分组 2024-07-04 18:38:39 +08:00
52fc52a586 fix . 2024-07-04 18:38:39 +08:00
682cdd576c fix 增加是否离职参数 2024-07-04 18:38:39 +08:00
f7a1c5f6ba fix 增加设备type类型 2024-07-04 18:38:39 +08:00
c82d1c6952 fix oldNo 2024-07-04 18:38:39 +08:00
1de75cdad4 fix . 2024-07-04 18:31:11 +08:00
930c9fba1a fix 优化出差组生成 2024-07-04 18:27:53 +08:00
ac70d6c724 fix 自动创建出差分组 2024-07-04 18:19:20 +08:00
cae9035e4a feat 出差人员筛选,移除无用代码 2024-07-04 17:53:53 +08:00
218027ffd4 feat 档案查询类型 2024-07-04 17:03:41 +08:00
cac5a9a445 test . 2024-07-04 16:26:39 +08:00
06020915d2 fix 数据类型调整 2024-07-04 16:06:29 +08:00
4511a8ef09 fix . 2024-07-04 15:55:15 +08:00
39a16b8560 fix trip数据获取入参调整 2024-07-04 15:44:23 +08:00
f61bf9b4c7 fix 增加是否离职参数 2024-07-04 15:37:01 +08:00
5d74ec2f73 fix 增加设备type类型 2024-07-04 15:04:06 +08:00
0cf3c6f8b3 Merge remote-tracking branch 'origin/development' into development 2024-07-04 13:54:17 +08:00
f752c0101c fix oldNo 2024-07-04 13:09:45 +08:00
381c11f693 fix oldNo 2024-07-04 11:25:45 +08:00
a2cbbdeb47 fix clientId问题 2024-07-04 10:46:11 +08:00
cc355e278b Merge branch 'development' 2024-07-03 16:26:07 +08:00
b376ec2387 feat sap出差信息获取,海宁余额上传tenantId问题 2024-07-03 16:24:46 +08:00
3fa486cfb4 fix 移除无用接口,数据权限增加tenant-admin过滤 2024-07-03 16:18:57 +08:00
16fe03edcb feat 接口通用处理 2024-07-03 15:49:16 +08:00
79e4e9a211 fix admin数据权限问题 2024-07-03 14:59:00 +08:00
435e82c2c0 feat 数据权限 2024-07-03 14:45:16 +08:00
644ce59c4d fix 表继承 2024-07-03 10:17:33 +08:00
3db76f2318 fix 判断数据状态逻辑修改 2024-07-02 18:33:20 +08:00
4c12571c29 feat 老档案号任务处理 2024-07-02 18:28:14 +08:00
2c8f7a016f fix 优化首页接口 2024-07-02 16:57:40 +08:00
dadd246f05 remove 移除服务端发起心跳 2024-07-02 16:22:49 +08:00
2cea51232f fix 处理营业点分配功能问题 2024-07-02 15:53:55 +08:00
6e3cd23e73 remove 获取所有消费记录分页权限控制 2024-07-02 15:21:39 +08:00
38ab947790 fix 处理自动注册部署点为AUTO的名称 2024-07-02 14:27:02 +08:00
07281721d9 fix 数据排序优化 2024-07-02 14:26:23 +08:00
955a411b2c fix 简化设备上传记录接口 2024-07-02 13:53:05 +08:00
0646fa59a2 fix 路由重置 2024-07-02 11:21:05 +08:00
80e92d0019 feat 重算 2024-07-02 11:12:25 +08:00
e9f71bcef3 fix . 2024-07-02 10:56:24 +08:00
1f035abc68 fix 就餐时段保存处理 2024-07-02 10:30:14 +08:00
a40ca244cc fix 员工消费明细移除abs 2024-06-30 00:41:04 +08:00
f3b0d4ed17 fix 处理离职人员 2024-06-30 00:25:58 +08:00
27afdb5767 fix 移除role控制 2024-06-29 11:34:58 +08:00
111637f8a7 feat 手动余额导入重算功能 2024-06-28 17:59:59 +08:00
a7158ac4b0 fix 细节调整 2024-06-28 17:18:16 +08:00
17699e0c6c fix 提醒处理 2024-06-28 16:51:11 +08:00
a529aea0d4 fix 增加消费离线说明 2024-06-28 16:40:28 +08:00
3ba6fd132a fix 增加判断下载逻辑 2024-06-28 16:26:46 +08:00
d45955a9a0 fix 离线消费处理 2024-06-28 16:23:45 +08:00
f41d266df2 log . 2024-06-28 14:56:46 +08:00
c7f2fdd1c1 Merge branch 'refs/heads/development' 2024-06-28 14:03:56 +08:00
9446ba6ffa fix 任务图片连接处理 2024-06-28 14:03:40 +08:00
0214309e64 remove 移除user项目 2024-06-28 11:58:37 +08:00
9daa92d849 fix 原数据返回 2024-06-28 11:32:05 +08:00
924306ab30 fix 移除无效table 2024-06-28 11:14:49 +08:00
1214814a12 fix 匹配问题 2024-06-27 21:36:56 +08:00
87d3e9d2da fix 调试问题 2024-06-27 21:35:22 +08:00
051a19aa66 fix 解析外包人员工号问题 2024-06-27 18:57:43 +08:00
75f7c73ded fix 移除离线时参数校验 2024-06-27 17:49:04 +08:00
69998ead5c fix 返回远程响应 2024-06-27 17:23:17 +08:00
71114b12a5 update framework 2024-06-27 17:11:01 +08:00
8c45dd123b fix 移除if debug宏 2024-06-27 16:37:49 +08:00
f2144e7c2a feat 跳板机接口 2024-06-27 15:56:56 +08:00
ef0261c291 fix 初始化下载gainfomeal处理 2024-06-27 15:37:45 +08:00
eb81e43c42 fix 移除policy 2024-06-27 14:23:33 +08:00
79c90a0bf1 fix 移除auth 2024-06-27 14:14:15 +08:00
8656240f1e fix 部门数据重复处理 2024-06-27 14:07:26 +08:00
2f5c9cf4b1 fix 支持逗号多factory 2024-06-27 13:53:43 +08:00
4f48186193 fix factory支持逗号隔开 2024-06-27 12:04:43 +08:00
a2b05f3bc0 fix 代码恢复 2024-06-27 11:02:01 +08:00
cec075bae9 fix 优化本地离线和在线消费处理 2024-06-27 10:32:23 +08:00
a405af0435 feat 提供跳板机数据上传接口 2024-06-27 10:30:55 +08:00
01bc681807 fix 数据where处理 2024-06-26 18:23:06 +08:00
ee4dfc5fa5 fix 调试 2024-06-26 17:17:41 +08:00
da1baa62bc fix db setting 2024-06-26 17:04:38 +08:00
ab5a481dbc fix 补充appsettings 2024-06-26 16:54:10 +08:00
df7ce79c75 Merge branch 'refs/heads/development' 2024-06-26 16:21:24 +08:00
40c6d207ed fix 字段名称修改 2024-06-26 15:58:59 +08:00
822f55b2e9 fix 增加userId处理 2024-06-26 15:00:23 +08:00
7da8e12390 fix 区分提醒 2024-06-26 14:35:58 +08:00
119e34f76b fix 查询条件 2024-06-26 14:05:12 +08:00
ed39bd889a fix 查询first 2024-06-26 13:34:05 +08:00
a07d5cc946 fix 增加离线判断 2024-06-26 13:30:13 +08:00
d5d1617cf6 fix 处理可能为离职人员数据 2024-06-26 13:28:14 +08:00
9d663cd18c add . 2024-06-26 13:03:36 +08:00
856543d74f fix gainfo.id空引用问题 2024-06-26 13:03:27 +08:00
e71d714209 feat 跳板机中间api 2024-06-26 12:14:39 +08:00
67fa5e5994 fix ignoreTenantId 2024-06-26 12:00:08 +08:00
fb797908e0 feat 提供数据下载功能 2024-06-26 11:09:11 +08:00
d1b7dfae1e fix 向上递归包括当前部门分配 2024-06-25 18:30:25 +08:00
2f42cd2075 fix 权限数据获取展示问题 2024-06-25 18:02:13 +08:00
d26b0740bc fix dictionary key冲突 2024-06-25 17:47:39 +08:00
c14a1a5313 fix 权限分配优化按部门 2024-06-25 17:28:37 +08:00
34c0882f1d fix 增加image记录,移除balance负数处理 2024-06-25 15:41:39 +08:00
0657fcb472 fix db对象 2024-06-25 11:46:44 +08:00
3b5bd20b54 fix 显示非sap员工数据 2024-06-25 11:43:50 +08:00
8ddbd88636 fix 获取部门权限分配 2024-06-25 10:18:15 +08:00
afaab92e08 fix 记录上传任务创建增加判断 2024-06-24 21:34:02 +08:00
2c0e0ea636 fix 日志区分任务类型数量 2024-06-24 21:07:46 +08:00
ef18e20adf fix code/no包含查找 2024-06-24 17:52:19 +08:00
0d08600ef4 feat 设备操作相关image记录 2024-06-24 17:45:23 +08:00
9c705075bd feat 获取设备权限人员接口 2024-06-24 17:41:04 +08:00
596d2a2805 fix 数据库转换处理 2024-06-24 17:04:01 +08:00
d1d2334a84 fix 权限导入控制来源类型 2024-06-24 16:57:06 +08:00
6d773cb0e1 fix 开放权限配置 2024-06-24 15:49:40 +08:00
a783803e2f feat 老系统档案上传功能 2024-06-24 11:05:09 +08:00
49201f2e49 fix 处理已知问题 2024-06-22 18:19:13 +08:00
cf04fb01ad fix 改用db查询 2024-06-22 13:17:50 +08:00
cf7e757b7d fix 逻辑取反 2024-06-21 15:24:33 +08:00
4cc90ec5cc fix 标识任务的设备状态 2024-06-21 14:33:38 +08:00
e7b5271377 fix ShowPII 2024-06-21 03:48:52 +08:00
11fbae1049 fix 临时处理 2024-06-21 00:52:06 +08:00
a379ac0ab3 fix 域名 2024-06-21 00:40:57 +08:00
87d86dc7cf fix 使用域名请求 2024-06-21 00:36:10 +08:00
c310d6d66b fix datapermission assignments 2024-06-20 23:36:01 +08:00
7439cfbbf8 fix 分配设备datapermission 2024-06-20 23:28:57 +08:00
e5b6374865 debug . 2024-06-20 22:18:05 +08:00
691fb8ddc1 fix 任务userId 2024-06-20 15:18:35 +08:00
e90074123b fix 取消并发处理 2024-06-20 14:35:14 +08:00
bd04be5685 fix 工号匹配 2024-06-20 14:26:24 +08:00
9e762e903b fix 数据过滤处理 2024-06-20 13:47:21 +08:00
69026057f9 Merge branch 'refs/heads/development' 2024-06-20 13:07:26 +08:00
9ad98cdb17 fix 分配分组人员数据权限 2024-06-20 13:07:11 +08:00
813a6c8a14 fix Parallel计算人员的权限 2024-06-20 12:31:30 +08:00
78ecf1e11d fix 并发计算 2024-06-19 20:13:39 +08:00
4a09eb013e fix 余额导入重新核算 2024-06-19 19:40:26 +08:00
823adaff1f fix I_ALLINFO=X移除 2024-06-19 14:38:03 +08:00
396593b239 fix 就餐人员餐补总额显示 2024-06-19 14:36:40 +08:00
8a45ec51e9 fix 设备消费记录支持范围查询 2024-06-18 23:02:32 +08:00
a2287cca9d fix 任务获取userid处理 2024-06-18 17:55:49 +08:00
6fa2c376a5 fix 外包工号更新 2024-06-18 17:29:54 +08:00
b28e695542 feat 拆分海宁餐补 2024-06-18 10:00:31 +08:00
ee9066e17c fix 暂时移除海宁餐补 2024-06-18 09:34:28 +08:00
4ccf2ac623 fix 重试获取任务 2024-06-17 22:48:05 +08:00
a3672d52f4 fix 设备模板分页权限 2024-06-17 21:56:05 +08:00
280a4893ab add log 2024-06-17 16:41:37 +08:00
64359d62b3 add log 2024-06-17 16:30:54 +08:00
a83d6b1702 fix 日志输出,补充脱敏 2024-06-17 16:12:30 +08:00
bc6d4af0d9 fix 人员详情人脸数据脱敏 2024-06-17 15:34:32 +08:00
0e86cafebf fix 查询匹配使用code 2024-06-17 14:49:29 +08:00
1859f9abe2 fix sql别名错误 2024-06-17 10:52:33 +08:00
2c3d5422d3 fix 任务分页查看离职和外部人员 2024-06-17 10:48:44 +08:00
a9d9427da6 fix id返回,仅判断meal设,移除心跳间隔30秒判断 2024-06-17 10:32:57 +08:00
909d310620 fix 心跳间隔任务调整 2024-06-16 13:18:41 +08:00
b8020e3e20 fix 批量入职外包人员 2024-06-16 01:35:03 +08:00
24d4608f72 fix 同步离职异常问题 2024-06-15 12:08:51 +08:00
7097f2360c fix . 2024-06-14 21:25:05 +08:00
0c8bddbcd9 fix 恢复可操作 2024-06-14 21:19:09 +08:00
cff1e55c52 test . 2024-06-14 21:10:40 +08:00
69ab083454 test . 2024-06-14 20:18:47 +08:00
e33d090b2c fix 获取数据写入 2024-06-14 20:08:41 +08:00
2061484ee1 test . 2024-06-14 20:02:51 +08:00
2567790799 test . 2024-06-14 19:07:36 +08:00
f119940ad6 test . 2024-06-14 18:52:29 +08:00
3104446fb4 test . 2024-06-14 17:57:38 +08:00
c9508b0302 test . 2024-06-14 17:15:47 +08:00
77f236672b fix 外包人员信息接口移除授权 2024-06-14 17:10:12 +08:00
eb482fb53c test . 2024-06-14 16:55:37 +08:00
e3809a3d36 fix 移除AllowAnonymous 2024-06-14 16:49:09 +08:00
61562a8137 test 测试获取山西数据速度 2024-06-14 16:45:49 +08:00
3c3b1821f1 fix 根据重新获取任务间隔 2024-06-14 16:35:38 +08:00
b2c2e51cf5 update 同步移除tenantId 2024-06-14 15:52:31 +08:00
f5a3e1fe7c fix 同时返回userNo 2024-06-14 15:51:40 +08:00
86c7111c19 fix external支持外包人员 2024-06-14 15:21:35 +08:00
c1417e667d fix 外包人员增加工号可选 2024-06-14 14:36:15 +08:00
3d6bb69f11 fix 按设备维度控制role分配 2024-06-14 12:25:16 +08:00
a545f46d27 fix 控制不可按role分配权限 2024-06-14 12:17:21 +08:00
0452fca141 fix 调整创建人1 2024-06-14 11:30:00 +08:00
b9b96f1bfc fix 用户同步和设备ignoreTenant 2024-06-14 10:17:14 +08:00
58340d98c1 fix 展示移除消费权限判断 2024-06-13 16:56:07 +08:00
efc6373720 fix 数据权限处理注解tenantid 2024-06-13 16:09:45 +08:00
0e1ba8446d fix 升级数据权限问题 2024-06-13 15:29:49 +08:00
bd91787e92 fix 获取品牌设备增加factory字段 2024-06-13 14:49:41 +08:00
15c67a4f78 fix 增加部门名称,数据权限控制 2024-06-13 14:26:46 +08:00
1ca13d09d2 fix 根据品牌获取设备 2024-06-12 17:38:05 +08:00
ab3d689232 fix import餐饮人员创建 2024-06-12 15:38:56 +08:00
2f53e825a0 fix 移除无用目录 2024-06-12 12:17:55 +08:00
5d9dcc3752 fix 心跳间隔为0默认为活跃状态 2024-06-12 12:17:55 +08:00
62f1545796 fix 请求方式修改 2024-06-12 12:17:55 +08:00
5141ce601c feat 获取部门下一级,扩展方法错误 2024-06-12 12:17:55 +08:00
1975e37294 fix 补充缺少字段 2024-06-12 12:17:55 +08:00
e609537a6e feat 按设备,设备组,营业点维度添加人员 2024-06-12 12:17:55 +08:00
319deb26bf fix 门禁首页统计优化 2024-06-12 12:17:55 +08:00
d3a9cb62c3 fix 任务根据设备心跳状态获取 2024-06-12 12:17:55 +08:00
478965a23a fix 设备组重组 2024-06-12 12:17:55 +08:00
0ae4d20821 fix 消费二维码使用时间戳 2024-06-12 12:17:55 +08:00
30ba1ed430 feat 数据敏感分配角色可见,切换基地,定时任务lock 2024-06-12 12:17:55 +08:00
7c33bf8aba fix 恢复ToDateJsonConverter,增加获取设备的人员列表,数据权限移除 2024-06-12 12:17:55 +08:00
70259cff03 fix 消费二维码使用时间戳 2024-06-12 12:17:55 +08:00
7f7b759840 fix 恢复ToDateJsonConverter,增加获取设备的人员列表,数据权限移除 2024-06-12 12:17:55 +08:00
452547b9cc fix 更新登陆信息 2024-06-12 12:17:55 +08:00
d2d0f076c3 feat 数据敏感分配角色可见,切换基地,定时任务lock 2024-06-12 12:17:55 +08:00
69f09a6600 fix 恢复ToDateJsonConverter,增加获取设备的人员列表,数据权限移除 2024-06-12 12:17:55 +08:00
eb80bd090c feat 档案人脸分页状态 2024-06-12 12:17:55 +08:00
6827982506 feat 按设备,设备组,营业点维度添加人员 2024-06-12 12:17:40 +08:00
0c77b0c87f fix 消费二维码使用时间戳 2024-06-12 12:16:36 +08:00
a87f80d511 feat 数据敏感分配角色可见,切换基地,定时任务lock 2024-06-12 12:16:36 +08:00
a25e951ea2 feat 数据敏感分配角色可见,切换基地,定时任务lock 2024-06-12 12:16:24 +08:00
d200a1626b fix 恢复ToDateJsonConverter,增加获取设备的人员列表,数据权限移除 2024-06-12 12:16:24 +08:00
592840a7f9 fix 消费二维码使用时间戳 2024-06-12 12:16:12 +08:00
34bb546d8a fix 恢复ToDateJsonConverter,增加获取设备的人员列表,数据权限移除 2024-06-12 12:13:29 +08:00
49fb19bd52 feat 数据敏感分配角色可见,切换基地,定时任务lock 2024-06-12 12:13:02 +08:00
fc15d50fc2 fix 恢复ToDateJsonConverter,增加获取设备的人员列表,数据权限移除 2024-06-12 12:12:33 +08:00
f1aaf6177a feat 按设备,设备组,营业点维度添加人员 2024-06-12 12:11:42 +08:00
0ddabca9e0 fix 门禁首页统计优化 2024-06-12 12:11:42 +08:00
a15e0f5754 fix 任务根据设备心跳状态获取 2024-06-12 12:11:42 +08:00
b51c2cd642 fix 设备组重组 2024-06-12 12:11:42 +08:00
a44513d9a1 fix 消费二维码使用时间戳 2024-06-12 12:11:42 +08:00
1155db6742 feat 数据敏感分配角色可见,切换基地,定时任务lock 2024-06-12 12:11:42 +08:00
926f5bf4d6 fix 恢复ToDateJsonConverter,增加获取设备的人员列表,数据权限移除 2024-06-12 12:11:42 +08:00
a75be47135 fix 消费二维码使用时间戳 2024-06-12 12:11:42 +08:00
6777224f1d fix 恢复ToDateJsonConverter,增加获取设备的人员列表,数据权限移除 2024-06-12 12:11:41 +08:00
a65074b940 fix 更新登陆信息 2024-06-12 12:11:41 +08:00
8cfe2dd813 feat 数据敏感分配角色可见,切换基地,定时任务lock 2024-06-12 12:11:41 +08:00
d4ba1a7a0a fix 恢复ToDateJsonConverter,增加获取设备的人员列表,数据权限移除 2024-06-12 12:11:41 +08:00
51b0397763 feat 档案人脸分页状态 2024-06-12 12:11:41 +08:00
02e3e5c63b feat 按设备,设备组,营业点维度添加人员 2024-06-12 12:11:41 +08:00
452192d36e fix 部门数移除厂区节点 2024-06-12 12:11:41 +08:00
f1bf86ec0c fix 门禁首页统计优化 2024-06-12 12:11:41 +08:00
82a3994d4d fix 任务根据设备心跳状态获取 2024-06-12 12:11:41 +08:00
0a7898cd73 fix 设备组重组 2024-06-12 12:11:41 +08:00
cf5d1348f0 fix 消费二维码使用时间戳 2024-06-12 12:11:41 +08:00
b0b7cd2627 feat 数据敏感分配角色可见,切换基地,定时任务lock 2024-06-12 12:11:41 +08:00
e918fa4ace feat 数据敏感分配角色可见,切换基地,定时任务lock 2024-06-12 12:11:41 +08:00
9b359cc283 fix 恢复ToDateJsonConverter,增加获取设备的人员列表,数据权限移除 2024-06-12 12:11:41 +08:00
bbb34663c7 fix 消费二维码使用时间戳 2024-06-12 12:11:41 +08:00
c8b232ee66 feat 数据敏感分配角色可见,切换基地,定时任务lock 2024-06-12 12:11:41 +08:00
f27d044c1d fix 恢复ToDateJsonConverter,增加获取设备的人员列表,数据权限移除 2024-06-12 12:11:41 +08:00
ac0ab2bb00 fix 更新登陆信息 2024-06-12 12:11:41 +08:00
73d8d67504 feat 数据敏感分配角色可见,切换基地,定时任务lock 2024-06-12 12:11:41 +08:00
a052e77e53 fix 恢复ToDateJsonConverter,增加获取设备的人员列表,数据权限移除 2024-06-12 12:11:41 +08:00
dd6db605a1 fix ignoretenant 2024-06-12 10:47:17 +08:00
e641ce92a7 fix 餐补数据来源修改 2024-06-12 10:01:23 +08:00
00fd009ce0 feat 根据工号获取海宁消费记录 2024-06-10 21:46:49 +08:00
f74b0ba43e fix 营业点参数处理 2024-06-10 21:00:01 +08:00
47e92be51f feat 内部余额写入 2024-06-10 19:13:43 +08:00
d8d14610e9 fix 优化代码风格和触发数据迁移任务下发 2024-06-09 00:19:12 +08:00
114cd5d006 feat 获取人脸登记详情 2024-06-07 22:17:26 +08:00
a3f4950df2 fix 任务获取支持根据厂区 2024-06-07 18:05:29 +08:00
9d1d069450 fix 餐补人员显示离职人员,分配权限增加锁 2024-06-07 12:11:32 +08:00
c978e773b2 fix 分配处理临时恢复 2024-06-06 17:28:44 +08:00
39b748f4bc fix 增加tenant-admin 2024-06-05 19:13:12 +08:00
662bd2e245 feat 员工消费二维码 2024-06-05 17:51:03 +08:00
b93cff743c fix 工作地海宁餐补处理 2024-06-05 15:42:46 +08:00
7a63d23706 fix 海宁储能餐补 2024-06-05 15:16:59 +08:00
582393e45d fix 并发执行问题,保密人员余额迁移 2024-06-04 21:38:12 +08:00
9af6472be6 fix 数据处理 2024-06-04 14:40:52 +08:00
95f55732cc test usercode 2024-06-04 14:26:56 +08:00
0a7fc847f0 test 处理第一个数据异常问题 2024-06-04 14:23:51 +08:00
a2d97f25af test data 2024-06-04 14:15:05 +08:00
9812275c8f test 数据检查 2024-06-04 14:10:21 +08:00
60aac5a03a test 查询数据count 2024-06-04 13:14:48 +08:00
16f0d75f22 test ignore 2024-06-04 13:13:08 +08:00
1a338f9fa3 test 测试异常数据数量 2024-06-04 12:22:16 +08:00
1c709652f5 fix 海宁餐补 2024-05-31 22:07:15 +08:00
d11d6f5904 fix 临时移除 2024-05-31 20:23:18 +08:00
895524e6c7 fix 代码优化 2024-05-31 19:34:35 +08:00
8778e5ad84 fix version 2024-05-31 17:52:23 +08:00
fb7bd33098 fix 补充入离日期 2024-05-31 16:09:02 +08:00
abe6a52ee1 fix 移除无用代码 2024-05-31 16:04:41 +08:00
fc0da62986 feat 获取额外信息 2024-05-31 16:04:05 +08:00
7f14b1fdc5 fix 优化任务分配速度 2024-05-30 23:01:21 +08:00
bce58ef938 fix 消费接口增加安全访问 2024-05-30 21:14:54 +08:00
5c30638274 fix 优化datetime格式 2024-05-30 20:44:41 +08:00
75bd31d4a5 feat 外包人员,框架升级 2024-05-30 19:37:27 +08:00
5a437af90b Merge remote-tracking branch 'origin/development' into development 2024-05-30 13:44:03 +08:00
Kurris
f16fdd2d04 fix 小数点控制 2024-05-30 13:41:51 +08:00
Kurris
496e3b5a04 fix 小数点控制 2024-05-27 13:46:37 +08:00
Kurris
5aaaa81353 fix 移除人员判断语句 2024-05-27 09:43:32 +08:00
Kurris
47cb34d4c6 fix 补充日志调试 2024-05-27 09:20:38 +08:00
Kurris
aa1a84a5a7 fix 减少获取同步数据 2024-05-27 09:08:02 +08:00
Kurris
9f5f1652ae fix 表达式错误 2024-05-27 09:01:40 +08:00
Kurris
22c450519b fix 表达式错误 2024-05-27 08:52:06 +08:00
Kurris
a39f792edd fix 数据过滤调整 2024-05-25 01:53:59 +08:00
ee949358f6 fix 控制导入的权限 2024-05-24 15:41:55 +08:00
7e2c0c7e39 fix 外包人员,餐补导入,人员列表 2024-05-24 15:28:31 +08:00
db094bc768 Merge remote-tracking branch 'origin/development' into development
# Conflicts:
#	Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs
2024-05-24 15:16:44 +08:00
a845daf559 fix 默认参数问题 2024-05-24 15:15:47 +08:00
0751415a22 fix 是否作为考勤分页返回 2024-05-24 15:11:17 +08:00
e0c9621e56 fix 用户列表查询问题 2024-05-24 15:11:17 +08:00
9be2a5ce04 fix 优化人员列表展示 2024-05-24 15:11:17 +08:00
1422d6836c feat 获取出差信息 2024-05-24 15:11:17 +08:00
5383410b77 feat 餐补余额导入 2024-05-24 15:11:17 +08:00
af6ef69091 fix 设备方向,代码格式化 2024-05-24 15:11:17 +08:00
74cb452032 fix 访客预约优化 2024-05-24 15:10:39 +08:00
22c4f774d8 fix . 2024-05-24 15:10:39 +08:00
51a0ffe4f1 fix docker环境 2024-05-24 15:10:39 +08:00
06134de484 fix . 2024-05-24 15:10:39 +08:00
ee55665da1 fix 依赖 2024-05-24 15:10:39 +08:00
e17691d62d fix 依赖 2024-05-24 15:10:39 +08:00
3e4fb791cd fix 依赖问题 2024-05-24 15:10:39 +08:00
b4651bbb44 fix linux依赖问题 2024-05-24 15:10:39 +08:00
b41a257056 fix 路由前缀问题 2024-05-24 15:10:39 +08:00
d056acf52e fix 注册设备默认信息 2024-05-24 15:01:25 +08:00
9cc880253c fix 数据添加有误处理,展示排序 2024-05-24 14:37:03 +08:00
c3b69fbf24 fix 数据问题 2024-05-24 12:07:30 +08:00
3d3d17c799 fix 是否作为考勤分页返回 2024-05-23 14:49:00 +08:00
75f9edb1fa fix 用户列表查询问题 2024-05-23 14:45:41 +08:00
74a6b71a3a fix 优化人员列表展示 2024-05-22 16:44:45 +08:00
8773c06c86 feat 获取出差信息 2024-05-22 16:39:55 +08:00
99aa2a71a2 feat 餐补余额导入 2024-05-22 16:39:08 +08:00
03f732c412 fix 设备方向,代码格式化 2024-05-21 17:09:54 +08:00
234a5d2984 fix 访客预约优化 2024-05-21 17:07:28 +08:00
56ac694d85 fix . 2024-05-09 11:24:20 +08:00
4e8f50b544 fix docker环境 2024-05-09 11:21:56 +08:00
4046d54b2a fix . 2024-05-09 10:51:39 +08:00
f3dec0ccdf fix 依赖 2024-05-07 18:50:33 +08:00
6b2978dc37 fix 依赖 2024-05-07 18:31:30 +08:00
98b7ec90be fix 依赖问题 2024-05-07 18:10:43 +08:00
e5e1901143 fix linux依赖问题 2024-05-07 15:17:23 +08:00
49b6aa6e82 fix 路由前缀问题 2024-05-07 15:06:54 +08:00
cfb78c6bc9 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-05-07 14:45:58 +08:00
ca425fd067 feat 检测 2024-05-07 14:45:56 +08:00
922ed7211d fix 命名修改 2024-05-07 14:45:56 +08:00
46450cc15b fix role=admin移除 2024-05-07 14:45:56 +08:00
004dc6268f fix 必须分配基地 2024-05-07 14:45:56 +08:00
b5c6551783 fix 代码优化 2024-05-07 14:45:56 +08:00
9bdd39acbe feat 用户基地配置 2024-05-07 14:45:56 +08:00
2380dc9c79 fix 权限递归获取 2024-05-07 14:45:56 +08:00
ffa0311cc3 fix 菜单获取递归处理 2024-05-07 14:45:56 +08:00
f2e619028c feat 检测 2024-05-07 14:45:48 +08:00
aaf43f7540 fix 命名修改 2024-05-07 12:54:39 +08:00
dfaa35e487 fix role=admin移除 2024-05-06 17:20:26 +08:00
44e0ddca35 fix 必须分配基地 2024-04-28 11:26:23 +08:00
339236c79f fix 代码优化 2024-04-28 11:16:23 +08:00
a248920f83 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-04-28 11:13:58 +08:00
74843a1677 feat 用户基地配置 2024-04-28 11:11:04 +08:00
2c17f38c5e fix 权限递归获取 2024-04-28 10:46:45 +08:00
62596ee61d fix 菜单获取递归处理 2024-04-28 10:46:45 +08:00
c03fd748a3 fix 营业日期查询 2024-04-25 11:42:29 +08:00
f112ef3160 fix 权限递归获取 2024-04-24 22:32:26 +08:00
dea3361a93 fix 菜单获取递归处理 2024-04-24 22:16:20 +08:00
9885c8d9ae feat 组织架构 2024-04-23 19:10:23 +08:00
cc273a4693 fix 离线显示,优化enable获取设备,优化设备查询营业日期 2024-04-23 11:35:35 +08:00
350b78efef fix 用餐分析日期倒序 2024-04-22 16:13:16 +08:00
02bc171feb fix 分组处理 2024-04-22 15:11:27 +08:00
c027b59d5d fix 处理分页值问题 2024-04-22 14:26:54 +08:00
089f020110 fix 优化代码 2024-04-22 14:09:58 +08:00
9f9e80061f fix 成本日期问题 2024-04-22 13:22:20 +08:00
dac893de02 fix 日期问题 2024-04-22 13:14:32 +08:00
71fa1df4eb fix shiftcode为null 2024-04-22 13:04:28 +08:00
976506b355 fix 尝试清洗数据 2024-04-22 12:39:19 +08:00
e6071b47f1 fix 获取日志最后一条处理 2024-04-21 09:39:14 +08:00
fa8ffb5cf6 fix 字典获取值问题 2024-04-21 09:35:09 +08:00
d5fcc5b7fd fix 匹配餐次问题 2024-04-20 15:44:05 +08:00
b3b1952ba0 fix 恢复注释代码 2024-04-20 15:37:08 +08:00
66367ec4f4 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-04-20 15:31:14 +08:00
5746f93f8e fix 修改为分配设备 2024-04-20 15:30:27 +08:00
99ca6696c7 fix 消费统计 2024-04-20 15:30:27 +08:00
df24e24e75 fix 身份证匹配 2024-04-20 15:29:52 +08:00
8005a4e89e fix 外部人员上传照片 2024-04-20 15:29:52 +08:00
c7d6991521 fix redis配置 2024-04-20 15:29:52 +08:00
7721dc22a4 fix 人脸接口代码调整 2024-04-20 15:29:52 +08:00
39dbdf7d38 fix idno加密 2024-04-20 15:29:52 +08:00
81c4fdabbc feat 新增服务 2024-04-20 15:29:52 +08:00
3e4c5cc86b add dockerfile 2024-04-20 15:29:52 +08:00
f8d1997ddd Squashed commit of the following:
commit 528cdd51c05d26437f0b23f415e06311b667e9f7
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Wed Apr 17 15:37:30 2024 +0800

    feat 访客预约

commit e73a3fcd9307f86aba2c39578495c03cde1d41f9
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Apr 16 16:15:16 2024 +0800

    feat 业务curd

commit b98b6e2764fea875866e11f790f388ccf3c234b5
Merge: a3dcec3 965e84b
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Apr 16 14:56:30 2024 +0800

    Merge branch 'feat-visitorAppointments' of https://git.dlhis.com/liguoyang/jinko.yikatong into feat-visitorAppointments

commit a3dcec30e1289fbb09de8f85009d3931d971337a
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:57:49 2024 +0800

    fix appsettings

commit 766fbec0c45a3852a75a7a37686b885ac3b0a77a
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:37:01 2024 +0800

    add dockerfile

commit 86731d41fee97ba073065ed1b807987760a371a7
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Sun Apr 14 20:11:56 2024 +0800

    fix 测试websocket链接

commit 1301b126a9ba9a7d97cf45967cf2915e1169c505
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:57:49 2024 +0800

    fix appsettings

commit 081f3a67896c67891c3f80edde82a440b8736851
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:37:01 2024 +0800

    add dockerfile

commit 271b6c5898b5732a35ccfa0629ce89442ac49143
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:34:26 2024 +0800

    test 提交测试代码

commit 965e84b6f3b7f925f8021c9b996cce961b896dea
Merge: 578eb6a 6a6fad1
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Apr 15 17:06:45 2024 +0800

    Merge branch 'feat-visitorAppointments' of https://git.dlhis.com/liguoyang/jinko.yikatong into feat-visitorAppointments

commit 578eb6afbd96f0bfe4aaf8058fd4743309c74d62
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Sun Apr 14 20:11:56 2024 +0800

    fix 测试websocket链接

commit 114511f1daea64b7dbf9c3c38b73e28b6d0301e6
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:57:49 2024 +0800

    fix appsettings

commit 5eacfa8af8087eade8553266a12a2cf42305716b
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:37:01 2024 +0800

    add dockerfile

commit b2ffff1f099be343d89690014d05cb859776acbb
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:34:26 2024 +0800

    test 提交测试代码

commit 6a6fad1d1b8772eebf5df12cd74cfd5c955ff560
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Sun Apr 14 20:11:56 2024 +0800

    fix 测试websocket链接

commit 9ce3c4d6f63957c175d65370d9a6b80e10f4254f
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:57:49 2024 +0800

    fix appsettings

commit c637fd89850cf289d7da457c6c6f47354b5beed3
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:37:01 2024 +0800

    add dockerfile

commit 58c39815b1c45a99aea0caf503fcb1365c957f03
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:34:26 2024 +0800

    test 提交测试代码
2024-04-20 15:29:52 +08:00
4b6d29291f fix dir 2024-04-20 15:29:52 +08:00
125aae476b fix 修改为分配设备 2024-04-19 17:27:49 +08:00
5888684c15 fix 消费统计 2024-04-19 17:06:51 +08:00
a2c121eadc fix 时间变更,在线订单转离线情况 2024-04-19 16:10:18 +08:00
8df7f8f419 fix 隐藏admin用户 2024-04-19 12:24:07 +08:00
0987771686 fix 控制admin问题 2024-04-19 12:21:21 +08:00
c5cb85facd fix admin控制 2024-04-19 12:14:33 +08:00
c4393d46ce fix 补充werks记录 2024-04-18 16:22:14 +08:00
8400a992fc fix werks数据记录 2024-04-18 16:15:20 +08:00
de58369b1c fix 身份证匹配 2024-04-18 15:06:27 +08:00
5426a21449 fix 外部人员上传照片 2024-04-18 15:03:41 +08:00
de37fc8bec fix redis配置 2024-04-18 14:34:58 +08:00
708d28c849 fix 人脸接口代码调整 2024-04-17 18:14:34 +08:00
36546d71c1 fix 时间范围 2024-04-17 17:49:32 +08:00
0387689ad5 fix 增加userno提升速度 2024-04-17 17:37:09 +08:00
e8994e44c9 fix 注释 2024-04-17 17:31:03 +08:00
b5a817af18 fix idno加密 2024-04-17 16:42:05 +08:00
4770733b26 feat 新增服务 2024-04-17 15:49:25 +08:00
0d137dd7b5 add dockerfile 2024-04-17 15:41:35 +08:00
1276c53305 Squashed commit of the following:
commit 528cdd51c05d26437f0b23f415e06311b667e9f7
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Wed Apr 17 15:37:30 2024 +0800

    feat 访客预约

commit e73a3fcd9307f86aba2c39578495c03cde1d41f9
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Apr 16 16:15:16 2024 +0800

    feat 业务curd

commit b98b6e2764fea875866e11f790f388ccf3c234b5
Merge: a3dcec3 965e84b
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Apr 16 14:56:30 2024 +0800

    Merge branch 'feat-visitorAppointments' of https://git.dlhis.com/liguoyang/jinko.yikatong into feat-visitorAppointments

commit a3dcec30e1289fbb09de8f85009d3931d971337a
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:57:49 2024 +0800

    fix appsettings

commit 766fbec0c45a3852a75a7a37686b885ac3b0a77a
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:37:01 2024 +0800

    add dockerfile

commit 86731d41fee97ba073065ed1b807987760a371a7
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Sun Apr 14 20:11:56 2024 +0800

    fix 测试websocket链接

commit 1301b126a9ba9a7d97cf45967cf2915e1169c505
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:57:49 2024 +0800

    fix appsettings

commit 081f3a67896c67891c3f80edde82a440b8736851
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:37:01 2024 +0800

    add dockerfile

commit 271b6c5898b5732a35ccfa0629ce89442ac49143
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:34:26 2024 +0800

    test 提交测试代码

commit 965e84b6f3b7f925f8021c9b996cce961b896dea
Merge: 578eb6a 6a6fad1
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Apr 15 17:06:45 2024 +0800

    Merge branch 'feat-visitorAppointments' of https://git.dlhis.com/liguoyang/jinko.yikatong into feat-visitorAppointments

commit 578eb6afbd96f0bfe4aaf8058fd4743309c74d62
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Sun Apr 14 20:11:56 2024 +0800

    fix 测试websocket链接

commit 114511f1daea64b7dbf9c3c38b73e28b6d0301e6
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:57:49 2024 +0800

    fix appsettings

commit 5eacfa8af8087eade8553266a12a2cf42305716b
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:37:01 2024 +0800

    add dockerfile

commit b2ffff1f099be343d89690014d05cb859776acbb
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:34:26 2024 +0800

    test 提交测试代码

commit 6a6fad1d1b8772eebf5df12cd74cfd5c955ff560
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Sun Apr 14 20:11:56 2024 +0800

    fix 测试websocket链接

commit 9ce3c4d6f63957c175d65370d9a6b80e10f4254f
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:57:49 2024 +0800

    fix appsettings

commit c637fd89850cf289d7da457c6c6f47354b5beed3
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:37:01 2024 +0800

    add dockerfile

commit 58c39815b1c45a99aea0caf503fcb1365c957f03
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Apr 12 17:34:26 2024 +0800

    test 提交测试代码
2024-04-17 15:38:25 +08:00
54373131d6 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-04-17 15:37:50 +08:00
baa1439e91 fix dir 2024-04-17 15:37:48 +08:00
581294237c fix 数据问题处理 2024-04-16 19:38:54 +08:00
8fb18ef1c6 fix 角色分配 2024-04-16 15:59:37 +08:00
2d2eb9dc49 fix 餐别显示 2024-04-16 15:18:23 +08:00
7731e8bb2c fix 调试代码移除 2024-04-16 15:10:29 +08:00
d0dc4425fe Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-04-16 14:51:19 +08:00
a24b3a0294 fix dir 2024-04-16 14:51:07 +08:00
97dc2c9b7a fix 处理已知问题 2024-04-16 14:50:43 +08:00
b51b93f273 fix 优化数据问题 2024-04-16 12:36:21 +08:00
8ee16d5e95 fix 移除多余代码 2024-04-16 11:51:23 +08:00
cc32e1d961 fix redis配置 2024-04-16 11:13:41 +08:00
99f0db5877 fix 开放山西人员数据接口 2024-04-15 19:08:40 +08:00
8443dd7446 fix 处理数据写入索引约束问题 2024-04-15 18:03:30 +08:00
6695ad5100 fix 移除授权标识 2024-04-15 17:55:49 +08:00
1aa0126454 fix dir 2024-04-15 17:06:07 +08:00
9300f6545d feat 外部人员上传人脸 2024-04-15 17:01:23 +08:00
48bb170272 fix 获取档案失败自动发起同步任务 2024-04-15 17:01:09 +08:00
380c86aae2 fix 优化查询 2024-04-15 16:59:13 +08:00
7982d5d9fd fix 优先级字段处理 2024-04-15 16:57:57 +08:00
03e51265be fix 调整考勤记录任务生成时间 2024-04-14 21:44:18 +08:00
2debdd979c fix 优化 2024-04-14 21:27:47 +08:00
39be0cd4c1 fix 金额处理 2024-04-14 18:50:53 +08:00
858b5a93f4 fix 离职任务生成调整 2024-04-14 11:05:13 +08:00
6ed0b3736c fix 语法错误 2024-04-14 10:47:47 +08:00
a759d08cc4 fix sync 显示 2024-04-14 10:36:14 +08:00
69981e1627 fix 优先级 2024-04-14 10:34:31 +08:00
c527389390 fix 优化处理中的问题获取 2024-04-14 01:54:02 +08:00
c8253bb083 fix 修复response写入问题,禁用设备导入 2024-04-13 09:31:22 +08:00
4445988bf4 fix api日志增加时间筛选 2024-04-12 11:57:50 +08:00
fd317c643b fix 代码复杂度调整 2024-04-11 14:41:49 +08:00
1d1a241ad4 fix 移除tenantId筛选 2024-04-11 13:17:02 +08:00
03c49b5e9f fix 数据状态处理 2024-04-11 12:48:00 +08:00
7884b4d70e fix 增加记录创建时间 2024-04-11 00:37:05 +08:00
a4bf7c80c3 fix DeviceType 2024-04-10 23:24:13 +08:00
6455903cf0 fix leave user id 2024-04-10 22:54:39 +08:00
5df49f3ebe fix null userid 2024-04-10 22:52:40 +08:00
fdefadb9db fix 金额小于等于零 2024-04-10 18:24:51 +08:00
4969717c92 fix 增加状态判断 2024-04-10 18:03:53 +08:00
2bc76b4ce5 fix 数据赋值,增加餐补数据修复处理 2024-04-10 17:32:14 +08:00
c867dd2533 fix 查询优化 2024-04-10 15:20:22 +08:00
91d823c9e1 fix 查询优化 2024-04-10 15:01:08 +08:00
f88f67934e fix 查询优化 2024-04-10 14:38:34 +08:00
1fdfec7799 fix 设备保存全局校验 2024-04-10 14:33:42 +08:00
13446d8295 fix 移除2401过滤 2024-04-10 14:19:43 +08:00
335a1211fb fix 查询优化 2024-04-10 13:11:23 +08:00
ce4a3409e9 fix 优化任务,增加设备类型 2024-04-09 22:46:30 +08:00
d5c6a98d4e fix 索引命中处理 2024-04-09 21:54:43 +08:00
e37771df4a fix 测试性能 2024-04-09 21:44:10 +08:00
e745af6da8 fix ioc 2024-04-09 21:38:41 +08:00
25d33c36eb fix 配置需要tenantId 2024-04-09 18:02:45 +08:00
8e72b0afc9 fix 设置enable过滤 2024-04-09 17:44:51 +08:00
d6a9e835b6 Merge 2024-04-09 17:38:42 +08:00
d257df697f fix 餐次段编辑赋值 2024-04-09 17:36:28 +08:00
2d724500e0 fix 逻辑处理 2024-04-09 17:05:07 +08:00
8874808a2a fix 重新核算离线数据 2024-04-09 17:02:10 +08:00
1beb64df63 fix 补充catch 2024-04-09 16:50:51 +08:00
ed37f070eb fix 人员数据缺少处理 2024-04-09 16:49:06 +08:00
11da6ec572 fix 记录错误单号 2024-04-09 16:32:53 +08:00
a528d92012 fix 餐饮消费控制和设备统计优化 2024-04-09 15:58:12 +08:00
22208fc1d9 fix 确保null异常和write response问题 2024-04-09 15:54:55 +08:00
cc58e39a44 fix 路由充值保存顺序 2024-04-09 15:54:25 +08:00
475db1d433 fix 框架升级 2024-04-09 15:53:49 +08:00
8cca671363 fix 考勤上传接口响应序列化问题 2024-04-09 13:09:32 +08:00
fa728cfca6 fix nullable异常 2024-04-09 11:19:43 +08:00
99e2e3cc10 fix 作废明细增加权限控制 2024-04-08 19:12:53 +08:00
9ca748a432 fix 查询优化 2024-04-08 18:25:18 +08:00
3d136b13bf fix 消费明细分页调整 2024-04-08 18:09:46 +08:00
c5e8de6114 fix FromQuery 2024-04-08 17:26:40 +08:00
baf350b293 fix 查询我的餐补接口迁移 2024-04-08 17:00:13 +08:00
bcbddb95b4 fix IgnoreDataCase 2024-04-08 15:46:42 +08:00
dc901eeb6b fix 过滤订单号 2024-04-07 23:04:28 +08:00
8b98558432 fix 增加search 2024-04-07 22:25:29 +08:00
ec09c5ba9f fix 离职id处理 2024-04-07 21:56:02 +08:00
ec8d6049b9 fix 优化同步离职处理 2024-04-07 21:43:50 +08:00
c3749ab5fc fix 下发任务数据补充 2024-04-07 21:19:29 +08:00
c27639d000 fix 编译问题 2024-04-07 20:58:03 +08:00
9033ed8614 fix 处理离职下发问题 2024-04-07 20:55:41 +08:00
16100f3d04 fix null处理 2024-04-07 20:30:31 +08:00
c772776962 fix 权限重发增加是否离职处理 2024-04-07 20:26:10 +08:00
85aff31c4a fix 部门号赋值 2024-04-07 19:57:12 +08:00
90c070e0e2 fix 补充部门名称 2024-04-07 19:52:55 +08:00
9ce6e3b5e8 fix 数据过滤 2024-04-07 19:35:58 +08:00
249a672195 fix 查询余额 2024-04-07 19:28:48 +08:00
07988e988c fix 返回增加,搜索 2024-04-07 19:18:15 +08:00
8b4b680bfc fix 订单状态 2024-04-07 19:14:47 +08:00
11ac3c5742 fix 离线数据处理 2024-04-07 19:02:09 +08:00
e88caccaa5 fix 超市限额问题 2024-04-07 17:55:39 +08:00
beb8f3e5a1 fix 包装异常结果 2024-04-07 17:43:04 +08:00
e7c0b929fb fix 调用方法错误 2024-04-07 17:02:21 +08:00
cfcf9a27a6 fix nullable处理 2024-04-07 15:45:05 +08:00
4c2e6d0d8e fix job 2024-04-07 15:25:24 +08:00
6eddf943c2 fix job 2024-04-07 15:22:19 +08:00
af07a2c970 fix job 2024-04-07 15:16:54 +08:00
f4421c52f4 fix 逻辑if处理 2024-04-07 15:13:44 +08:00
babf8a838b fix 人事范围同步控制,餐补消费离职人员处理 2024-04-07 14:58:29 +08:00
b9977df4eb fix 接口权限控制问题 2024-04-07 14:41:30 +08:00
456f6ed34e fix 营业点保存设备 2024-04-07 11:04:29 +08:00
28e4cbf513 fix 任务过滤 2024-04-06 20:57:31 +08:00
9632e31772 fix 订餐恢复余额扣除 2024-04-06 19:57:15 +08:00
328dcdc006 fix 字段增加 2024-04-06 19:36:23 +08:00
c3adc58b24 fix 校验值处理 2024-04-06 19:32:07 +08:00
53e796ff53 fix 设备任务获取结合心跳 2024-04-04 15:15:18 +08:00
82ef9e8cd6 fix 上传人脸触发任务失败问题 2024-04-04 14:47:50 +08:00
fd3361dcf7 fix 离职人员餐补处理 2024-04-04 14:12:01 +08:00
5e4e5d5856 fix 异常控制 2024-04-03 23:23:36 +08:00
aa07a90b78 fix 餐补人员却失自动同步 2024-04-03 22:59:25 +08:00
174a44cf2f fix 设备权限处理 2024-04-03 21:59:47 +08:00
3e2a8cc2dd fix job 2024-04-03 21:11:34 +08:00
028fff8b6d fix job 2024-04-03 19:01:27 +08:00
be466b413c fix job 2024-04-03 18:47:05 +08:00
7c8d92c430 fix job 2024-04-03 18:27:45 +08:00
63f8b4b6d2 fix hashcode 2024-04-03 18:16:27 +08:00
9ef9e92152 fix job 2024-04-03 18:01:43 +08:00
5aa7417184 fix 处理同步字段缺少问题 2024-04-03 17:36:40 +08:00
c46ee953d1 fix 优化数据比较 2024-04-03 16:43:28 +08:00
2776ac5218 fix 获取差异数据调试 2024-04-03 16:19:39 +08:00
89cfe87093 fix 移除权限下发调试 2024-04-03 15:47:24 +08:00
2e05e9645f fix 单个人员同步方法修改 2024-04-03 15:30:16 +08:00
28a347e04a fix sap人员同步拆分 2024-04-03 15:29:03 +08:00
77ec9c9fc9 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-04-03 11:53:07 +08:00
d2456b9fb5 fix 文件大小处理 2024-04-03 11:50:28 +08:00
b63a0b4938 refactor 文件版本重构 2024-04-03 11:50:28 +08:00
318491d2f1 feat 点位图 2024-04-03 11:50:28 +08:00
1dbb76b607 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-04-03 11:48:55 +08:00
6e1d498394 fix 文件大小处理 2024-04-03 11:47:36 +08:00
ddbe7386ce refactor 文件版本重构 2024-04-03 11:47:36 +08:00
4a612f6b24 feat 点位图 2024-04-03 11:47:36 +08:00
6d2384f93f feat 人员任务重发 2024-04-03 11:47:05 +08:00
b8372311a0 fix 异常处理 2024-04-03 10:23:00 +08:00
c1198473ae Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-04-02 20:28:23 +08:00
e464fd811b fix 文件大小处理 2024-04-02 20:28:21 +08:00
56ef9a8760 refactor 文件版本重构 2024-04-02 20:28:21 +08:00
f3dacebaf6 feat 点位图 2024-04-02 20:28:21 +08:00
bc69c97789 fix 文件大小处理 2024-04-02 20:28:05 +08:00
29b0008960 refactor 文件版本重构 2024-04-02 19:56:08 +08:00
5940914e57 feat 点位图 2024-04-02 16:59:26 +08:00
726c013193 fix 直接更新任务状态 2024-04-02 16:25:48 +08:00
fb41e05c42 fix 餐补数据分页 2024-04-02 14:11:11 +08:00
867c212222 fix 人事范围调整 2024-04-02 13:41:36 +08:00
96421ed164 fix 优化手动获取人员 2024-04-02 13:18:59 +08:00
ae8fdf8fdc fix 增加手动获取人员,逻辑复用 2024-04-02 11:29:16 +08:00
bd1db198b2 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-04-02 10:11:16 +08:00
ffa79fa144 fix DbType 2024-04-02 10:11:11 +08:00
2c91eda6a0 fix framework 2024-04-02 10:11:11 +08:00
2b42eb248b fix DbType 2024-04-02 10:10:42 +08:00
2ce5b1aaac fix framework 2024-04-01 17:58:08 +08:00
7cdf973c3e fix 移除无效代码 2024-04-01 17:12:18 +08:00
03cb7ba259 fix 消费明细记录 2024-04-01 17:10:15 +08:00
58cf67cbc1 add 补充文件 2024-04-01 11:15:45 +08:00
a1559a5b53 feat 设备连接 2024-04-01 11:15:02 +08:00
175ca143e2 feat 订单消费数据增加软删除 2024-04-01 11:12:55 +08:00
3288e33788 fix job调整 2024-04-01 09:57:48 +08:00
f03b08ae64 fix 地址变更为正式 2024-03-30 22:52:00 +08:00
342a014dca fix 代码调试 2024-03-30 22:45:11 +08:00
4e17364f4d fix 更新请求地址 2024-03-30 22:28:17 +08:00
9092f86d40 fix 海宁api地址修改 2024-03-30 22:03:24 +08:00
d9cdaa6032 fix 同步间隔 2024-03-29 18:19:13 +08:00
2f98f830f0 fix 取消queue 2024-03-29 15:55:44 +08:00
8f29f42427 fix 编译warning优化 2024-03-29 11:15:39 +08:00
fb74503bd6 fix 队列处理 2024-03-29 11:03:25 +08:00
b7afd65440 fix 更新dockerfile 2024-03-29 10:56:21 +08:00
5d3202724d fix rebase错误 2024-03-29 10:45:01 +08:00
8b4f70bd7f Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-29 10:43:46 +08:00
e2c8dcf8d5 refactor 封装任务,调整人员获取 2024-03-29 10:43:42 +08:00
1d2572e617 fix 移除无效代码 2024-03-29 10:43:42 +08:00
780fff9e97 feat 接入海宁餐补api 2024-03-29 10:43:42 +08:00
f7a9c98ff1 fix 提交联调测试 2024-03-29 10:43:42 +08:00
cheche
79763d7f01 fix 操作员 2024-03-29 10:43:42 +08:00
cheche
b267fa51be fix 账户关联名称 2024-03-29 10:43:25 +08:00
cheche
1f1be3102d fix 取消操作员 2024-03-29 10:43:25 +08:00
cheche
ceaef2caa7 fix 账户关联名称 2024-03-29 10:43:25 +08:00
8ed5efac83 refactor 封装任务,调整人员获取 2024-03-29 10:43:13 +08:00
b46fac4ba2 fix 移除无效代码 2024-03-29 10:42:22 +08:00
8989cfb0e5 feat 接入海宁餐补api 2024-03-29 10:42:12 +08:00
f1c0e5c826 fix 提交联调测试 2024-03-27 14:53:32 +08:00
cheche
91b745a28c fix 操作员 2024-03-27 14:49:07 +08:00
cheche
c17df081e4 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-27 14:22:35 +08:00
cheche
dcbd4834ca fix 取消操作员 2024-03-27 14:22:30 +08:00
8553dd9d1d Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-27 14:21:03 +08:00
cheche
e6d1fc16dd fix 账户关联名称 2024-03-27 14:20:59 +08:00
cheche
c917dcd954 fix 账户关联名称 2024-03-27 14:15:21 +08:00
c75a58c5c4 fix 调整餐补处理间隔 2024-03-27 10:21:47 +08:00
97ccd72338 fix gateway本地配置 2024-03-26 19:01:31 +08:00
b3549a266e fix 查询日期范围处理 2024-03-26 14:18:05 +08:00
521543a79e fix 优化gainfo 2024-03-26 12:40:34 +08:00
b617e6cdc9 fix 岗位表索引 2024-03-26 12:06:54 +08:00
66e5043822 fix 岗位同步 2024-03-26 12:01:16 +08:00
325e6bdf36 fix job 2024-03-26 11:59:27 +08:00
0a4cf134d8 fix 查询优化 2024-03-26 11:57:26 +08:00
f9ea61ba49 fix 优化档案详情查询 2024-03-26 11:43:13 +08:00
d71f080cd3 fix 增加显示菜品名称 2024-03-26 11:27:27 +08:00
f69106c59b fix 生成token并入service种 2024-03-26 11:21:18 +08:00
2daa1b918d fix 优化可能为null情况 2024-03-25 13:56:51 +08:00
19e96788fa fix 用户不存在则创建 2024-03-25 12:46:08 +08:00
c7253f32a1 fix abs 金额 2024-03-25 11:53:02 +08:00
5f7b5f9fc2 fix 数量统计问题 2024-03-25 11:42:45 +08:00
83a0f49594 fix job 2024-03-25 11:18:48 +08:00
363deb8445 fix 汇总数量 2024-03-25 10:24:17 +08:00
ca1c41eb33 fix 枚举描述 2024-03-25 10:17:12 +08:00
7f51b5e91e Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-25 10:16:35 +08:00
af9c5a5749 fix 优化查询 2024-03-25 10:16:32 +08:00
b9b4d9af56 fix 优化查询 2024-03-25 10:16:23 +08:00
287c844d05 fix 查询优化 2024-03-24 21:55:14 +08:00
0eb099e7a1 fix 参数来源 2024-03-24 21:49:40 +08:00
9cd35d4277 fix 结果过滤 2024-03-24 21:48:20 +08:00
f76d9212bc fix 显示当前factory,排序 2024-03-24 21:34:51 +08:00
fc1db456ba fix 获取权限用户使用Factory 2024-03-24 20:20:34 +08:00
cfb0f263ae fix 订餐分页查询优化 2024-03-24 19:50:39 +08:00
7fafb8844c feat 根据code查询所有档案 2024-03-24 19:27:27 +08:00
69e52ed73f fix 临时处理 2024-03-24 16:06:12 +08:00
49ba03c5d2 fix 餐补job 2024-03-23 21:33:17 +08:00
bb80953da2 fix job 2024-03-23 21:15:49 +08:00
ec28fe5b85 fix 菜单查看调整 2024-03-23 21:02:28 +08:00
6f1100cb84 fix job 2024-03-23 19:13:55 +08:00
8267fad393 fix 调整餐补入库逻辑 2024-03-23 19:05:42 +08:00
aa0fca2c09 fix 餐补消费暂不扣费 2024-03-23 18:31:44 +08:00
517527365b fix cron 2024-03-23 18:22:26 +08:00
9e18659ee9 fix 注入类型错误 2024-03-23 18:19:37 +08:00
66afcb027a fix 注入ilogger错误 2024-03-23 18:17:51 +08:00
a65b591c92 fix 餐补直接入库处理 2024-03-23 18:14:09 +08:00
bda6983c46 fix 消费记录取消租户控制 2024-03-23 18:01:35 +08:00
7742a710fb fix 代码合并错误 2024-03-23 17:30:04 +08:00
7ac0e17574 fix 用户创建增加Name 2024-03-23 17:22:36 +08:00
4d77fa4871 fix 参数控制 2024-03-23 17:01:22 +08:00
36efd5deca fix 判断冲突 2024-03-23 16:38:42 +08:00
9040bf8c95 fix 消费查询匹配 2024-03-23 01:53:57 +08:00
7d18c8ea55 fix 订单取消需要根据支付方式 2024-03-23 01:41:21 +08:00
89db005f0d refactor 警告/提醒处理 2024-03-23 01:14:59 +08:00
f42900a962 fix merge error 2024-03-23 00:57:47 +08:00
cb5e06b6ed Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-23 00:52:30 +08:00
143a108361 fix all接口移除权限控制 2024-03-23 00:46:25 +08:00
8aaf460681 fix 餐补处理 2024-03-23 00:46:25 +08:00
db62a5e6bd fix 分类树增加营业点参数 2024-03-23 00:45:48 +08:00
0f0f0060dc fix 判断提前 2024-03-23 00:45:12 +08:00
3836b59e25 fix 菜单时效范围 2024-03-23 00:45:12 +08:00
92d194ecae fix 订单查询 2024-03-23 00:44:10 +08:00
df8976ed03 fix 订单取消接口,分页权限控制 2024-03-23 00:44:10 +08:00
653548be24 fix 营业点权限控制优化 2024-03-23 00:43:32 +08:00
a809a03928 feat 获取所有地址 2024-03-23 00:43:31 +08:00
7f8e4bfa01 fix 优化查询 2024-03-23 00:43:31 +08:00
aae8fc4981 fix 营业点控制(admin),unit返回 2024-03-23 00:42:34 +08:00
efbf85a5a9 fix 营业点分页控制 2024-03-23 00:42:20 +08:00
6d1f8ee1b7 fix 分类控制菜品获取 2024-03-23 00:42:20 +08:00
d840a04231 fix 订餐返回当前信息,增加数量入参和响应 2024-03-23 00:41:06 +08:00
374bad21c4 fix 餐补查询代码调整 2024-03-23 00:40:19 +08:00
297b6c12a5 fix 支付批量操作 2024-03-23 00:39:42 +08:00
2d8284a31b fix 补充营业点分配权限接口 2024-03-23 00:39:42 +08:00
9c3f14eb95 fix 代码优化 2024-03-23 00:39:06 +08:00
cheche
fc73435e6c fix 餐补查询及日志删除 2024-03-23 00:36:52 +08:00
1448ed8eb5 feat 订单聚合接口 2024-03-23 00:35:06 +08:00
14383741af feat 获取菜品 2024-03-23 00:32:20 +08:00
cheche
af61cb017a fix 删除日志优化 2024-03-23 00:32:00 +08:00
d6a08183b2 fix 预定就餐送货地点 2024-03-23 00:30:34 +08:00
009fdef71c fix 代码优化 2024-03-23 00:24:09 +08:00
cheche
2ac842869c feat 配送点管理 2024-03-23 00:22:50 +08:00
35fc506058 fix all接口移除权限控制 2024-03-23 00:20:03 +08:00
9684cd17b1 fix 餐补处理 2024-03-22 18:22:12 +08:00
3ea432943f Squashed commit of the following:
commit afdd9e6f14
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 21:48:05 2024 +0800

    fix 价格默认获取菜单中的设置

commit a3cfc472c8
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 21:40:04 2024 +0800

    fix 时间范围逻辑

commit 83f8906f12
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 21:32:55 2024 +0800

    fix 时间范围逻辑

commit 35660b1d0c
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 21:29:36 2024 +0800

    fix 数据范围罗逻辑修改

commit 7407955bc5
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 21:14:06 2024 +0800

    fix 分类树增加营业点参数

commit ed5196d1a1
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 21:02:52 2024 +0800

    feat 用户创建

commit d25909a235
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 20:51:20 2024 +0800

    fix 菜单明细调整

commit 8915f9ff0f
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 20:42:08 2024 +0800

    fix 判断提前

commit 45aa52aa2a
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 20:34:22 2024 +0800

    fix 逻辑取反

commit 89904fead1
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 20:23:20 2024 +0800

    fix 菜单时效范围

commit 573911f907
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 19:13:33 2024 +0800

    fix 订单聚合返回状态

commit 93c38be18a
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 18:40:12 2024 +0800

    fix 订单查询

commit e256d18d36
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 18:14:33 2024 +0800

    fix 订单取消接口,分页权限控制

commit 1218aec811
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 17:32:45 2024 +0800

    fix 营业点权限控制优化

commit 226c61ee41
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 17:09:42 2024 +0800

    fix tenantId赋值

commit 28d2c1d8d4
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 17:05:37 2024 +0800

    fix ignoretenant

commit 5ae6dd97b4
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 16:53:40 2024 +0800

    fix ignoretenant

commit 4c866eaf3f
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 16:40:24 2024 +0800

    feat 获取所有地址

commit 2ca8f2db49
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 16:22:47 2024 +0800

    fix 优化查询

commit 212a1fa073
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 16:01:49 2024 +0800

    fix 临时数据模拟

commit 0eb76e878c
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 15:48:59 2024 +0800

    fix 处理删除缺少判断

commit c582fb40c0
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 15:40:22 2024 +0800

    fix 查询优化

commit 6d3a19b283
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 11:48:45 2024 +0800

    fix 错误值修改

commit c39f77008d
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 11:31:50 2024 +0800

    fix 营业点控制(admin),unit返回

commit a5dcab1d07
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 11:16:23 2024 +0800

    fix 营业点分页控制

commit 02084be82b
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 11:01:14 2024 +0800

    fix 分类控制菜品获取

commit 96c5c5feba
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 10:39:58 2024 +0800

    fix DI

commit 367ede2eeb
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Thu Mar 21 10:35:24 2024 +0800

    fix 订餐返回当前信息,增加数量入参和响应

commit 0e1f6cb4a0
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Wed Mar 20 16:40:10 2024 +0800

    fix 餐补查询代码调整

commit 21fc2f78d3
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Wed Mar 20 15:52:46 2024 +0800

    fix 支付批量操作

commit 878b44a146
Merge: a90d4e6 bf5c937
Author: cheche <717840555@qq.com>
Date:   Wed Mar 20 15:27:39 2024 +0800

    Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development

commit a90d4e66a7
Author: cheche <717840555@qq.com>
Date:   Wed Mar 20 15:27:37 2024 +0800

    fix 餐补查询及日志删除

commit bf5c937037
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Wed Mar 20 15:12:30 2024 +0800

    fix 补充营业点分配权限接口

commit 07672f1d32
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Wed Mar 20 13:56:33 2024 +0800

    fix 优化changeDb

commit 7090ee4a33
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Wed Mar 20 13:41:25 2024 +0800

    fix 敏感信息混淆

commit 4366b68831
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Wed Mar 20 12:42:48 2024 +0800

    fix 代码优化

commit 03b73515b5
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Wed Mar 20 10:59:08 2024 +0800

    fix tree返回营业点

commit 1ce60bedc2
Merge: aba4fa7 2d83930
Author: cheche <717840555@qq.com>
Date:   Wed Mar 20 09:55:17 2024 +0800

    Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development

commit aba4fa7ee9
Author: cheche <717840555@qq.com>
Date:   Wed Mar 20 09:55:13 2024 +0800

    fix 删除日志优化

commit 2d8393068f
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Mar 19 20:53:16 2024 +0800

    feat 订单聚合接口

commit 0cde1d3d92
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Mar 19 20:03:06 2024 +0800

    fix 表名称调整

commit f003e30169
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Mar 19 19:51:56 2024 +0800

    fix 订餐null异常处理

commit f427338715
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Mar 19 18:43:19 2024 +0800

    feat 获取菜品

commit 3a65d95701
Merge: 9a7091b 7432fae
Author: cheche <717840555@qq.com>
Date:   Tue Mar 19 18:36:16 2024 +0800

    Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development

commit 9a7091b4e0
Author: cheche <717840555@qq.com>
Date:   Tue Mar 19 18:36:14 2024 +0800

    fix 删除日志try

commit 7432fae103
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Mar 19 18:02:31 2024 +0800

    fix 配送点增加

commit ecd162c7af
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Mar 19 17:51:15 2024 +0800

    fix 预定就餐送货地点

commit 1c7a054ed4
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Mar 19 15:53:22 2024 +0800

    feat 获取所有营业点接口

commit 84398a566e
Merge: 217d9f7 84b4025
Author: cheche <717840555@qq.com>
Date:   Tue Mar 19 15:26:42 2024 +0800

    Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development

commit 217d9f7770
Author: cheche <717840555@qq.com>
Date:   Tue Mar 19 15:26:40 2024 +0800

    feat  配送点管理

commit 84b402538e
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Mar 19 14:59:21 2024 +0800

    fix 菜单分页响应调整,增加详情接口

commit 098d7c7e9d
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Mar 19 14:26:24 2024 +0800

    fix 代码优化
2024-03-21 22:04:52 +08:00
afdd9e6f14 fix 价格默认获取菜单中的设置 2024-03-21 21:48:05 +08:00
a3cfc472c8 fix 时间范围逻辑 2024-03-21 21:40:04 +08:00
83f8906f12 fix 时间范围逻辑 2024-03-21 21:32:55 +08:00
35660b1d0c fix 数据范围罗逻辑修改 2024-03-21 21:29:36 +08:00
7407955bc5 fix 分类树增加营业点参数 2024-03-21 21:14:06 +08:00
ed5196d1a1 feat 用户创建 2024-03-21 21:02:52 +08:00
d25909a235 fix 菜单明细调整 2024-03-21 20:51:20 +08:00
8915f9ff0f fix 判断提前 2024-03-21 20:42:08 +08:00
45aa52aa2a fix 逻辑取反 2024-03-21 20:34:22 +08:00
89904fead1 fix 菜单时效范围 2024-03-21 20:23:20 +08:00
573911f907 fix 订单聚合返回状态 2024-03-21 19:13:33 +08:00
93c38be18a fix 订单查询 2024-03-21 18:40:12 +08:00
e256d18d36 fix 订单取消接口,分页权限控制 2024-03-21 18:14:33 +08:00
1218aec811 fix 营业点权限控制优化 2024-03-21 17:32:45 +08:00
226c61ee41 fix tenantId赋值 2024-03-21 17:09:42 +08:00
28d2c1d8d4 fix ignoretenant 2024-03-21 17:05:37 +08:00
5ae6dd97b4 fix ignoretenant 2024-03-21 16:53:40 +08:00
4c866eaf3f feat 获取所有地址 2024-03-21 16:40:24 +08:00
2ca8f2db49 fix 优化查询 2024-03-21 16:22:47 +08:00
212a1fa073 fix 临时数据模拟 2024-03-21 16:01:49 +08:00
0eb76e878c fix 处理删除缺少判断 2024-03-21 15:48:59 +08:00
c582fb40c0 fix 查询优化 2024-03-21 15:40:22 +08:00
6d3a19b283 fix 错误值修改 2024-03-21 11:48:45 +08:00
c39f77008d fix 营业点控制(admin),unit返回 2024-03-21 11:31:50 +08:00
a5dcab1d07 fix 营业点分页控制 2024-03-21 11:16:23 +08:00
02084be82b fix 分类控制菜品获取 2024-03-21 11:01:14 +08:00
96c5c5feba fix DI 2024-03-21 10:39:58 +08:00
367ede2eeb fix 订餐返回当前信息,增加数量入参和响应 2024-03-21 10:35:24 +08:00
0e1f6cb4a0 fix 餐补查询代码调整 2024-03-20 16:40:10 +08:00
21fc2f78d3 fix 支付批量操作 2024-03-20 15:52:46 +08:00
cheche
878b44a146 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-20 15:27:39 +08:00
cheche
a90d4e66a7 fix 餐补查询及日志删除 2024-03-20 15:27:37 +08:00
bf5c937037 fix 补充营业点分配权限接口 2024-03-20 15:12:30 +08:00
07672f1d32 fix 优化changeDb 2024-03-20 13:56:33 +08:00
7090ee4a33 fix 敏感信息混淆 2024-03-20 13:41:25 +08:00
4366b68831 fix 代码优化 2024-03-20 12:42:48 +08:00
03b73515b5 fix tree返回营业点 2024-03-20 10:59:08 +08:00
cheche
1ce60bedc2 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-20 09:55:17 +08:00
cheche
aba4fa7ee9 fix 删除日志优化 2024-03-20 09:55:13 +08:00
2d8393068f feat 订单聚合接口 2024-03-19 20:53:16 +08:00
0cde1d3d92 fix 表名称调整 2024-03-19 20:03:06 +08:00
f003e30169 fix 订餐null异常处理 2024-03-19 19:51:56 +08:00
f427338715 feat 获取菜品 2024-03-19 18:43:19 +08:00
cheche
3a65d95701 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-19 18:36:16 +08:00
cheche
9a7091b4e0 fix 删除日志try 2024-03-19 18:36:14 +08:00
7432fae103 fix 配送点增加 2024-03-19 18:02:31 +08:00
ecd162c7af fix 预定就餐送货地点 2024-03-19 17:51:15 +08:00
1c7a054ed4 feat 获取所有营业点接口 2024-03-19 15:53:22 +08:00
cheche
84398a566e Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-19 15:26:42 +08:00
cheche
217d9f7770 feat 配送点管理 2024-03-19 15:26:40 +08:00
84b402538e fix 菜单分页响应调整,增加详情接口 2024-03-19 14:59:21 +08:00
098d7c7e9d fix 代码优化 2024-03-19 14:26:24 +08:00
15d98356ae Merge branch 'development' 2024-03-19 13:51:30 +08:00
2bbf2862fe fix Guid nullable问题 2024-03-19 13:51:13 +08:00
192a770a75 Merge branch 'development' 2024-03-19 12:41:18 +08:00
85220f87b8 fix cancelid默认值 2024-03-19 12:40:49 +08:00
b23c674c6e Squashed commit of the following:
commit ee0ee9b167
Merge: e78ab0b cd4888d
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Mar 19 12:07:22 2024 +0800

    Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development

commit e78ab0baea
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Mar 19 12:06:13 2024 +0800

    fix 增加权限控制

commit 793a3325f2
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Mar 19 10:24:41 2024 +0800

    Squashed commit of the following:

    commit d4ab7d407a141b80024f85eeaab0062bea016051
    Author: liguoyang <Ligy.97@foxmail.com>
    Date:   Tue Mar 19 10:23:30 2024 +0800

        merge error

    commit 6204fa4ed15e0be303f7eb62307476725b8e7e36
    Merge: 7290f0b aaeacf4
    Author: liguoyang <Ligy.97@foxmail.com>
    Date:   Tue Mar 19 10:19:41 2024 +0800

        Merge branch 'feat-PlacePermission' of https://git.dlhis.com/liguoyang/jinko.yikatong into feat-PlacePermission

    commit 7290f0bd822c0e2bd957908fd58f6e99f22ad46b
    Author: cheche <717840555@qq.com>
    Date:   Tue Mar 12 15:05:28 2024 +0800

        fix 获取用户权限设备 优化

    commit 41b94fa3a9596a38cda1b4bf4f345ce13fe5677a
    Author: cheche <717840555@qq.com>
    Date:   Tue Mar 12 13:13:23 2024 +0800

        fix  第一

    commit aaeacf4ffa778eb6a6104e2349357644d038151b
    Author: cheche <717840555@qq.com>
    Date:   Tue Mar 12 15:05:28 2024 +0800

        fix 获取用户权限设备 优化

    commit 9e6099c52d0318cba35e7c082cb4d3085b46b0fa
    Author: cheche <717840555@qq.com>
    Date:   Tue Mar 12 14:00:53 2024 +0800

        fix 营业点配置权限

    commit b4565e34f48da0e5ef1d3dffa59d0ccf0d950920
    Author: cheche <717840555@qq.com>
    Date:   Tue Mar 12 13:13:23 2024 +0800

        fix  第一

commit 153f0ecd2a
Author: cheche <717840555@qq.com>
Date:   Tue Mar 19 09:58:31 2024 +0800

    fix 返回支付方式中文描述

commit e548c780b8
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 16:59:45 2024 +0800

    fix 优化送餐

commit fa376f7671
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 16:11:45 2024 +0800

    fix 参数结构调整

commit 1b58ca69bf
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 15:57:18 2024 +0800

    fix 餐次数据补充

commit e8a98c614c
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 15:11:56 2024 +0800

    add 补充实体变更

commit 4651adedc3
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 15:11:38 2024 +0800

    fix 优化查询,增加详情接口

commit ad48e37273
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 15:09:16 2024 +0800

    fix 枚举code过滤

commit abf2e2ed29
Author: cheche <717840555@qq.com>
Date:   Mon Mar 18 14:44:15 2024 +0800

    fix 获取订餐最晚时间

commit 00869111df
Author: cheche <717840555@qq.com>
Date:   Mon Mar 18 14:21:19 2024 +0800

    fix 检验权限修改

commit 7b83014119
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 13:42:35 2024 +0800

    fix 优化菜品保存和分页

commit fefc785b66
Author: cheche <717840555@qq.com>
Date:   Mon Mar 18 14:17:19 2024 +0800

    fix  修改营业点返回体

commit 3b7874a2a0
Author: cheche <717840555@qq.com>
Date:   Mon Mar 18 12:14:06 2024 +0800

    fix currentUser

commit c825531fda
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 11:03:43 2024 +0800

    fix 提交可编译版本

commit 8f430bccd3
Author: cheche <717840555@qq.com>
Date:   Mon Mar 18 11:48:38 2024 +0800

    fix GetDishesMenusBookingResponse修改字段

commit 69c60dc459
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 10:59:52 2024 +0800

    fix 增加日期返回

commit fadee3861a
Author: cheche <717840555@qq.com>
Date:   Mon Mar 18 11:01:31 2024 +0800

    fix GetDishesMenusBookingSetting返回体修改

commit 058b989ead
Author: cheche <717840555@qq.com>
Date:   Mon Mar 18 10:54:28 2024 +0800

    fix 获取营业点下面餐次

commit a82e7ff798
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 10:28:56 2024 +0800

    fix 命名空间调整

commit 9acdab4e01
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 10:27:46 2024 +0800

    fix 更新控制器名称

commit 3005443392
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 10:01:03 2024 +0800

    feat 菜品/菜单配置

commit a59404711c
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Sun Mar 17 21:26:16 2024 +0800

    feat 获取服务时间

commit ba0fe3e67f
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Sun Mar 17 20:58:11 2024 +0800

    fix 处理next空数组

commit 97fb157c9f
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Mar 15 20:49:44 2024 +0800

    fix 营业点权限调整

commit 70420b9668
Author: cheche <717840555@qq.com>
Date:   Fri Mar 15 18:54:15 2024 +0800

    fix 修改IBusinessPlacePermissionsService

commit 6f2383c663
Author: cheche <717840555@qq.com>
Date:   Fri Mar 15 18:47:33 2024 +0800

    fix  api

commit 99e1c8f125
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Mar 15 18:03:09 2024 +0800

    fix 实体变更

commit d327e9e3aa
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Mar 15 16:06:17 2024 +0800

    fix 临时修改送餐代码

commit 4825648e41
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Mar 15 15:13:53 2024 +0800

    fix 按基地分配获取值错误

commit 8ed8addbf3
Author: cheche <717840555@qq.com>
Date:   Fri Mar 15 15:10:55 2024 +0800

    fix 表增加ITenantid

commit cd4888d900
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Mar 19 12:06:13 2024 +0800

    fix 增加权限控制

commit 1cd9b2467e
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Mar 19 10:24:41 2024 +0800

    Squashed commit of the following:

    commit d4ab7d407a141b80024f85eeaab0062bea016051
    Author: liguoyang <Ligy.97@foxmail.com>
    Date:   Tue Mar 19 10:23:30 2024 +0800

        merge error

    commit 6204fa4ed15e0be303f7eb62307476725b8e7e36
    Merge: 7290f0b aaeacf4
    Author: liguoyang <Ligy.97@foxmail.com>
    Date:   Tue Mar 19 10:19:41 2024 +0800

        Merge branch 'feat-PlacePermission' of https://git.dlhis.com/liguoyang/jinko.yikatong into feat-PlacePermission

    commit 7290f0bd822c0e2bd957908fd58f6e99f22ad46b
    Author: cheche <717840555@qq.com>
    Date:   Tue Mar 12 15:05:28 2024 +0800

        fix 获取用户权限设备 优化

    commit 41b94fa3a9596a38cda1b4bf4f345ce13fe5677a
    Author: cheche <717840555@qq.com>
    Date:   Tue Mar 12 13:13:23 2024 +0800

        fix  第一

    commit aaeacf4ffa778eb6a6104e2349357644d038151b
    Author: cheche <717840555@qq.com>
    Date:   Tue Mar 12 15:05:28 2024 +0800

        fix 获取用户权限设备 优化

    commit 9e6099c52d0318cba35e7c082cb4d3085b46b0fa
    Author: cheche <717840555@qq.com>
    Date:   Tue Mar 12 14:00:53 2024 +0800

        fix 营业点配置权限

    commit b4565e34f48da0e5ef1d3dffa59d0ccf0d950920
    Author: cheche <717840555@qq.com>
    Date:   Tue Mar 12 13:13:23 2024 +0800

        fix  第一

commit ed25ab626a
Author: cheche <717840555@qq.com>
Date:   Tue Mar 19 09:58:31 2024 +0800

    fix 返回支付方式中文描述

commit c4b48131d2
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 16:59:45 2024 +0800

    fix 优化送餐

commit 8f26e7e84b
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 16:11:45 2024 +0800

    fix 参数结构调整

commit 8307d1d941
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 15:57:18 2024 +0800

    fix 餐次数据补充

commit 068a5b9507
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 15:11:56 2024 +0800

    add 补充实体变更

commit 805f0f83d1
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 15:11:38 2024 +0800

    fix 优化查询,增加详情接口

commit 9ef57fba55
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 15:09:16 2024 +0800

    fix 枚举code过滤

commit 0124fa4bc9
Author: cheche <717840555@qq.com>
Date:   Mon Mar 18 14:44:15 2024 +0800

    fix 获取订餐最晚时间

commit fd4a925b4a
Author: cheche <717840555@qq.com>
Date:   Mon Mar 18 14:21:19 2024 +0800

    fix 检验权限修改

commit e6dee2d504
Merge: 2cbf894 b3b9962
Author: cheche <717840555@qq.com>
Date:   Mon Mar 18 14:18:15 2024 +0800

    fix 解决dishersservice冲突

commit 2cbf894ea8
Author: cheche <717840555@qq.com>
Date:   Mon Mar 18 14:17:19 2024 +0800

    fix  修改营业点返回体

commit b3b99623e3
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 13:42:35 2024 +0800

    fix 优化菜品保存和分页

commit fcc1f134ed
Author: cheche <717840555@qq.com>
Date:   Mon Mar 18 12:14:06 2024 +0800

    fix currentUser

commit 253caf26c1
Merge: c743d2d 63ded81
Author: cheche <717840555@qq.com>
Date:   Mon Mar 18 11:48:41 2024 +0800

    Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development

commit c743d2d1c5
Author: cheche <717840555@qq.com>
Date:   Mon Mar 18 11:48:38 2024 +0800

    fix GetDishesMenusBookingResponse修改字段

commit 63ded819c5
Merge: 5fe4104 3b46ac2
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 11:03:45 2024 +0800

    Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development

commit 5fe4104ff6
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 11:03:43 2024 +0800

    fix 提交可编译版本

commit 3b46ac25a7
Merge: 11a3a0a a2eca2c
Author: cheche <717840555@qq.com>
Date:   Mon Mar 18 11:01:33 2024 +0800

    Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development

commit 11a3a0aded
Author: cheche <717840555@qq.com>
Date:   Mon Mar 18 11:01:31 2024 +0800

    fix GetDishesMenusBookingSetting返回体修改

commit a2eca2cdeb
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 10:59:52 2024 +0800

    fix 增加日期返回

commit 0bed0bc97b
Author: cheche <717840555@qq.com>
Date:   Mon Mar 18 10:54:28 2024 +0800

    fix 获取营业点下面餐次

commit c1d84ae1c6
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 10:28:56 2024 +0800

    fix 命名空间调整

commit e2cc31003f
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 10:27:46 2024 +0800

    fix 更新控制器名称

commit ab406adecf
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Mon Mar 18 10:01:03 2024 +0800

    feat 菜品/菜单配置

commit 6ba2d7d6a2
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Sun Mar 17 21:26:16 2024 +0800

    feat 获取服务时间

commit 6872518b65
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Sun Mar 17 20:58:11 2024 +0800

    fix 处理next空数组

commit 423d90bf3d
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Mar 15 20:49:44 2024 +0800

    fix 营业点权限调整

commit 220ff2d963
Author: cheche <717840555@qq.com>
Date:   Fri Mar 15 18:54:15 2024 +0800

    fix 修改IBusinessPlacePermissionsService

commit 72f93a59a6
Author: cheche <717840555@qq.com>
Date:   Fri Mar 15 18:47:33 2024 +0800

    fix  api

commit 149660ca0f
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Mar 15 18:03:09 2024 +0800

    fix 实体变更

commit 9a84143315
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Mar 15 16:06:17 2024 +0800

    fix 临时修改送餐代码

commit 328ef5f42c
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Mar 15 15:13:53 2024 +0800

    fix 按基地分配获取值错误

commit ea4a15c44b
Merge: a3112eb 255f4b4
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Fri Mar 15 15:13:37 2024 +0800

    Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development

commit 255f4b4a13
Author: cheche <717840555@qq.com>
Date:   Fri Mar 15 15:10:55 2024 +0800

    fix 表增加ITenantid
2024-03-19 12:09:50 +08:00
ee0ee9b167 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-19 12:07:22 +08:00
e78ab0baea fix 增加权限控制 2024-03-19 12:07:05 +08:00
793a3325f2 Squashed commit of the following:
commit d4ab7d407a141b80024f85eeaab0062bea016051
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Mar 19 10:23:30 2024 +0800

    merge error

commit 6204fa4ed15e0be303f7eb62307476725b8e7e36
Merge: 7290f0b aaeacf4
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Mar 19 10:19:41 2024 +0800

    Merge branch 'feat-PlacePermission' of https://git.dlhis.com/liguoyang/jinko.yikatong into feat-PlacePermission

commit 7290f0bd822c0e2bd957908fd58f6e99f22ad46b
Author: cheche <717840555@qq.com>
Date:   Tue Mar 12 15:05:28 2024 +0800

    fix 获取用户权限设备 优化

commit 41b94fa3a9596a38cda1b4bf4f345ce13fe5677a
Author: cheche <717840555@qq.com>
Date:   Tue Mar 12 13:13:23 2024 +0800

    fix  第一

commit aaeacf4ffa778eb6a6104e2349357644d038151b
Author: cheche <717840555@qq.com>
Date:   Tue Mar 12 15:05:28 2024 +0800

    fix 获取用户权限设备 优化

commit 9e6099c52d0318cba35e7c082cb4d3085b46b0fa
Author: cheche <717840555@qq.com>
Date:   Tue Mar 12 14:00:53 2024 +0800

    fix 营业点配置权限

commit b4565e34f48da0e5ef1d3dffa59d0ccf0d950920
Author: cheche <717840555@qq.com>
Date:   Tue Mar 12 13:13:23 2024 +0800

    fix  第一
2024-03-19 12:07:05 +08:00
cheche
153f0ecd2a fix 返回支付方式中文描述 2024-03-19 12:07:05 +08:00
e548c780b8 fix 优化送餐 2024-03-19 12:07:05 +08:00
fa376f7671 fix 参数结构调整 2024-03-19 12:07:05 +08:00
1b58ca69bf fix 餐次数据补充 2024-03-19 12:07:05 +08:00
e8a98c614c add 补充实体变更 2024-03-19 12:07:05 +08:00
4651adedc3 fix 优化查询,增加详情接口 2024-03-19 12:07:05 +08:00
ad48e37273 fix 枚举code过滤 2024-03-19 12:07:05 +08:00
cheche
abf2e2ed29 fix 获取订餐最晚时间 2024-03-19 12:07:05 +08:00
cheche
00869111df fix 检验权限修改 2024-03-19 12:06:50 +08:00
7b83014119 fix 优化菜品保存和分页 2024-03-19 12:06:50 +08:00
cheche
fefc785b66 fix 修改营业点返回体 2024-03-19 12:06:27 +08:00
cheche
3b7874a2a0 fix currentUser 2024-03-19 12:06:26 +08:00
c825531fda fix 提交可编译版本 2024-03-19 12:06:26 +08:00
cheche
8f430bccd3 fix GetDishesMenusBookingResponse修改字段 2024-03-19 12:06:26 +08:00
69c60dc459 fix 增加日期返回 2024-03-19 12:06:26 +08:00
cheche
fadee3861a fix GetDishesMenusBookingSetting返回体修改 2024-03-19 12:06:26 +08:00
cheche
058b989ead fix 获取营业点下面餐次 2024-03-19 12:06:26 +08:00
a82e7ff798 fix 命名空间调整 2024-03-19 12:06:26 +08:00
9acdab4e01 fix 更新控制器名称 2024-03-19 12:06:26 +08:00
3005443392 feat 菜品/菜单配置 2024-03-19 12:06:26 +08:00
a59404711c feat 获取服务时间 2024-03-19 12:06:26 +08:00
ba0fe3e67f fix 处理next空数组 2024-03-19 12:06:26 +08:00
97fb157c9f fix 营业点权限调整 2024-03-19 12:06:26 +08:00
cheche
70420b9668 fix 修改IBusinessPlacePermissionsService 2024-03-19 12:06:26 +08:00
cheche
6f2383c663 fix api 2024-03-19 12:06:26 +08:00
99e1c8f125 fix 实体变更 2024-03-19 12:06:26 +08:00
d327e9e3aa fix 临时修改送餐代码 2024-03-19 12:06:26 +08:00
4825648e41 fix 按基地分配获取值错误 2024-03-19 12:06:26 +08:00
cheche
8ed8addbf3 fix 表增加ITenantid 2024-03-19 12:06:26 +08:00
cd4888d900 fix 增加权限控制 2024-03-19 12:06:13 +08:00
1cd9b2467e Squashed commit of the following:
commit d4ab7d407a141b80024f85eeaab0062bea016051
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Mar 19 10:23:30 2024 +0800

    merge error

commit 6204fa4ed15e0be303f7eb62307476725b8e7e36
Merge: 7290f0b aaeacf4
Author: liguoyang <Ligy.97@foxmail.com>
Date:   Tue Mar 19 10:19:41 2024 +0800

    Merge branch 'feat-PlacePermission' of https://git.dlhis.com/liguoyang/jinko.yikatong into feat-PlacePermission

commit 7290f0bd822c0e2bd957908fd58f6e99f22ad46b
Author: cheche <717840555@qq.com>
Date:   Tue Mar 12 15:05:28 2024 +0800

    fix 获取用户权限设备 优化

commit 41b94fa3a9596a38cda1b4bf4f345ce13fe5677a
Author: cheche <717840555@qq.com>
Date:   Tue Mar 12 13:13:23 2024 +0800

    fix  第一

commit aaeacf4ffa778eb6a6104e2349357644d038151b
Author: cheche <717840555@qq.com>
Date:   Tue Mar 12 15:05:28 2024 +0800

    fix 获取用户权限设备 优化

commit 9e6099c52d0318cba35e7c082cb4d3085b46b0fa
Author: cheche <717840555@qq.com>
Date:   Tue Mar 12 14:00:53 2024 +0800

    fix 营业点配置权限

commit b4565e34f48da0e5ef1d3dffa59d0ccf0d950920
Author: cheche <717840555@qq.com>
Date:   Tue Mar 12 13:13:23 2024 +0800

    fix  第一
2024-03-19 10:24:41 +08:00
cheche
ed25ab626a fix 返回支付方式中文描述 2024-03-19 09:58:31 +08:00
c4b48131d2 fix 优化送餐 2024-03-18 16:59:45 +08:00
8f26e7e84b fix 参数结构调整 2024-03-18 16:11:45 +08:00
8307d1d941 fix 餐次数据补充 2024-03-18 15:57:18 +08:00
068a5b9507 add 补充实体变更 2024-03-18 15:11:56 +08:00
805f0f83d1 fix 优化查询,增加详情接口 2024-03-18 15:11:38 +08:00
9ef57fba55 fix 枚举code过滤 2024-03-18 15:09:16 +08:00
cheche
0124fa4bc9 fix 获取订餐最晚时间 2024-03-18 14:44:15 +08:00
cheche
fd4a925b4a fix 检验权限修改 2024-03-18 14:21:19 +08:00
cheche
e6dee2d504 fix 解决dishersservice冲突 2024-03-18 14:18:15 +08:00
cheche
2cbf894ea8 fix 修改营业点返回体 2024-03-18 14:17:19 +08:00
b3b99623e3 fix 优化菜品保存和分页 2024-03-18 13:42:35 +08:00
cheche
fcc1f134ed fix currentUser 2024-03-18 12:14:06 +08:00
cheche
253caf26c1 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-18 11:48:41 +08:00
cheche
c743d2d1c5 fix GetDishesMenusBookingResponse修改字段 2024-03-18 11:48:38 +08:00
63ded819c5 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-18 11:03:45 +08:00
5fe4104ff6 fix 提交可编译版本 2024-03-18 11:03:43 +08:00
cheche
3b46ac25a7 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-18 11:01:33 +08:00
cheche
11a3a0aded fix GetDishesMenusBookingSetting返回体修改 2024-03-18 11:01:31 +08:00
a2eca2cdeb fix 增加日期返回 2024-03-18 10:59:52 +08:00
cheche
0bed0bc97b fix 获取营业点下面餐次 2024-03-18 10:54:28 +08:00
c1d84ae1c6 fix 命名空间调整 2024-03-18 10:28:56 +08:00
e2cc31003f fix 更新控制器名称 2024-03-18 10:27:46 +08:00
ab406adecf feat 菜品/菜单配置 2024-03-18 10:01:03 +08:00
6ba2d7d6a2 feat 获取服务时间 2024-03-17 21:26:16 +08:00
6872518b65 fix 处理next空数组 2024-03-17 20:58:11 +08:00
423d90bf3d fix 营业点权限调整 2024-03-15 20:49:44 +08:00
cheche
220ff2d963 fix 修改IBusinessPlacePermissionsService 2024-03-15 18:54:15 +08:00
cheche
72f93a59a6 fix api 2024-03-15 18:47:33 +08:00
149660ca0f fix 实体变更 2024-03-15 18:03:09 +08:00
9a84143315 fix 临时修改送餐代码 2024-03-15 16:06:17 +08:00
328ef5f42c fix 按基地分配获取值错误 2024-03-15 15:13:53 +08:00
ea4a15c44b Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-15 15:13:37 +08:00
cheche
255f4b4a13 fix 表增加ITenantid 2024-03-15 15:10:55 +08:00
a3112eb256 Merge branch 'development' 2024-03-15 13:59:18 +08:00
cheche
7d8f4685ab Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-15 12:39:46 +08:00
cheche
69a80f2263 fix 字段修改1 2024-03-15 12:39:43 +08:00
8a0eb06038 fix 支持多选 2024-03-15 12:15:50 +08:00
1bddd5c90f fix 根节点pno设置为null 2024-03-15 11:59:24 +08:00
cheche
9fc0719bad feat 配置菜品菜单 2024-03-15 10:40:05 +08:00
cheche
1c0ad2edd6 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-15 09:28:11 +08:00
cheche
843662a404 fix 字段修正 2024-03-15 09:28:08 +08:00
ccf8a88a9b fix 调整为调度执行 2024-03-14 21:59:32 +08:00
9fdb2b0159 fix 移除无效字段返回 2024-03-14 21:44:02 +08:00
d3c1b45cf9 fix 取消处理代码位置 2024-03-14 21:29:20 +08:00
f2de9a6526 fix 数据获取需要比较时间 2024-03-14 21:08:28 +08:00
62d54c1f70 fix 逻辑优化 2024-03-14 21:04:45 +08:00
b763e74c12 fix 判断逻辑取反 2024-03-14 20:56:37 +08:00
7da5fdcb2f fix 删除任务设置所有为取消判断 2024-03-14 20:53:56 +08:00
7a6bedf3f4 fix 优化任务状态 2024-03-14 20:36:14 +08:00
efbb72105c fix 聚合swagger 2024-03-14 19:29:30 +08:00
2cdba175bd fix 优化唯一编码更新问题 2024-03-14 18:50:59 +08:00
89a93d2a69 fix 同步人员控制人事范围 2024-03-14 18:44:04 +08:00
6fcb73f7a9 fix 营业点增加供应商(承包商) 2024-03-14 18:42:46 +08:00
944d9c2291 fix 实体继承处理 2024-03-14 18:30:27 +08:00
cheche
d3a94a4d28 fix 解决合并冲突1 2024-03-14 17:21:46 +08:00
cheche
5be226aef2 fix 字段修改 2024-03-14 17:19:43 +08:00
16be030748 feat 餐补接收 2024-03-14 16:35:38 +08:00
d17b20365a fix 查询取消异常抛出 2024-03-14 15:46:08 +08:00
87a386a3d7 fix 入参取消Array 2024-03-13 20:17:48 +08:00
3e1827d5a1 fix log format 2024-03-13 20:15:53 +08:00
8998dd0789 fix 注销任务 2024-03-13 19:18:33 +08:00
cheche
53dd000f34 feat 菜单订单控制器 2024-03-13 18:55:12 +08:00
d7103c8269 fix 更新密码 2024-03-13 18:14:16 +08:00
cheche
20cf421a3c feat 菜单菜品实体 2024-03-13 14:20:52 +08:00
cheche
6e36cad158 fix 获取用户权限设备提醒优化 2024-03-12 16:02:19 +08:00
80aa3f6932 feat 数据迁移接口 2024-03-12 12:45:25 +08:00
73cc592cd3 fix 成本中心 2024-03-12 12:28:48 +08:00
cheche
1dbc1459ea Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-12 11:08:30 +08:00
cheche
e7aa353dce fix 营业点配置设备优化 2024-03-12 11:08:28 +08:00
f7f6a8686f Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-12 10:51:23 +08:00
a5f80a0ef4 fix 统计人数调整,移除无用接口 2024-03-12 10:51:19 +08:00
cheche
f53ca84776 fix 营业点配置设备位置移动 2024-03-12 10:51:10 +08:00
cheche
7bf97dbe5e fix 根据档案号 设备组查询设备优化 2024-03-12 10:34:31 +08:00
cheche
15f89a82a2 fix 字段优化 2024-03-12 09:24:53 +08:00
cheche
5684078071 feat 获取用户所有设备权限 2024-03-11 18:37:42 +08:00
cheche
31b11bdcd3 fix 消费记录根据状态筛选 2024-03-11 18:19:28 +08:00
59122c408f fix 根据档案号,设备组查询设备 2024-03-11 18:04:00 +08:00
cheche
90e5728fd3 feat aa 2024-03-11 17:48:47 +08:00
fff0928a86 fix 调整用户对应营业点处理 2024-03-11 16:31:26 +08:00
cheche
17aef775c3 feat 根据用户查看餐饮点 2024-03-11 16:12:52 +08:00
cheche
12b577e0d7 fix 档案详情优化 2024-03-11 14:33:48 +08:00
cheche
400ea0152c 考勤-记录查询,列表字段修改 2024-03-11 11:47:59 +08:00
bacadbe014 Merge branch 'master' into development 2024-03-11 11:36:21 +08:00
f56d1129c1 fix 优化注释, 优化face通用字段 2024-03-11 11:33:13 +08:00
cheche
3b4b837994 fix 金额变正新增设备名称 2024-03-11 10:31:59 +08:00
c4bb884d48 fix job 2024-03-10 16:19:09 +08:00
72b25c7095 fix 自动创建就餐人员 2024-03-10 13:55:37 +08:00
53d70cc136 fix 数据问题 2024-03-10 12:35:57 +08:00
41a956f1f6 fix 设备记录上传分页type区分 2024-03-10 11:57:48 +08:00
ee2881742b fix 设备查询优化 2024-03-10 11:49:42 +08:00
64a63e2e49 feat 同步账号 2024-03-10 00:55:51 +08:00
4e0485d51f fix 模板编辑控制 2024-03-10 00:55:23 +08:00
72ad6e7d23 fix job 2024-03-09 20:13:49 +08:00
7ef1434cff fix 人员更新获取code 2024-03-09 19:37:31 +08:00
33327718d9 fix 设备上传记录类型 2024-03-09 19:15:00 +08:00
500a972b70 fix job 2024-03-09 18:39:43 +08:00
3fb820bd2d fix 人员同步,下发任务创建 2024-03-09 18:03:33 +08:00
3bf767281e fix 上传记录使用工号 2024-03-09 16:00:09 +08:00
82b712da53 fix 获取我的厂区处理 2024-03-09 15:54:10 +08:00
ee451d25c7 fix 配置文件key 2024-03-09 15:09:11 +08:00
d9e9856eab fix job 2024-03-09 15:04:31 +08:00
e5a0df385d fix 匹配失败获取中文 2024-03-09 14:28:29 +08:00
6bb35017ae fix 处理前端冗余数据 2024-03-09 14:28:14 +08:00
fa408bdcab fix 优化考勤上传 2024-03-09 13:53:12 +08:00
f9a7152c2b fix 优化考勤记录上传 2024-03-09 13:17:40 +08:00
553332e204 fix 集成job 2024-03-09 12:18:35 +08:00
bbd7659320 fix 同步任务调整 2024-03-09 12:13:11 +08:00
cheche
07d77f1070 feat 门禁首页数据 2024-03-08 19:03:57 +08:00
cheche
6ebaf58bdc Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-08 17:59:31 +08:00
cheche
d9b7e80dec fix 导优 2024-03-08 17:59:29 +08:00
96ed9e04ef fix tenantId null 问题 2024-03-08 17:07:07 +08:00
23cc2588a3 fix rebase配置问题 2024-03-08 16:48:32 +08:00
27663b4e53 fix 数据类型调整 2024-03-08 16:42:22 +08:00
cheche
e08d4dc3c3 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-08 16:24:54 +08:00
cheche
0c639deefb fix 导入优化 2024-03-08 16:24:52 +08:00
d2385a3f4f fix 配置错误 2024-03-08 15:15:32 +08:00
47c882f754 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-08 14:54:24 +08:00
cheche
62dbaada9d fix 批量导入修改 2024-03-08 14:49:47 +08:00
eca9ca3a44 feat ocelot 2024-03-08 14:48:41 +08:00
40dd39adc9 fix 控制自动生成表结构 2024-03-08 11:51:55 +08:00
c72e1197b4 fix appsettings 2024-03-08 11:37:51 +08:00
cheche
f93c7e11c6 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-08 11:36:40 +08:00
cheche
5315632977 fix 批量导入修改 2024-03-08 11:36:36 +08:00
2d731e49c4 Merge branch 'development' 2024-03-08 11:31:56 +08:00
4fa49efeac fix 权限分配tenantId错误问题 2024-03-08 10:30:29 +08:00
538fe7c4b4 fix 优化档案查询 2024-03-07 21:34:04 +08:00
990fc247bc fix type修改为设备类型 2024-03-07 17:26:46 +08:00
cheche
cd0561a122 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-07 16:45:36 +08:00
cheche
ff15ae9176 feat 设备批量导入 2024-03-07 16:45:31 +08:00
5b38f09a36 fix unique为null问题 2024-03-07 15:31:20 +08:00
1de6bc6c0f fix 组织架构树调整 2024-03-07 15:17:40 +08:00
cheche
12215fdfd7 fix 设备模板保存优化 2024-03-07 11:10:46 +08:00
cheche
a1aa61b251 fix 设备任务分页优化 2024-03-07 10:51:28 +08:00
cheche
6a9400fb0a 解决balanceService冲突 2024-03-07 09:44:27 +08:00
cheche
224ddf1be5 feat 餐饮主页接口 2024-03-07 09:33:13 +08:00
a0505a1a93 fix 根据权限查询 2024-03-07 00:31:27 +08:00
20aa1b0815 fix 优化任务生成 2024-03-06 23:48:52 +08:00
3416b16e02 fix 档案组分配人员 2024-03-06 23:13:51 +08:00
83aa9cb954 fix 优化细节 2024-03-06 22:51:39 +08:00
04f20e7cf2 fix 唯一号处理 2024-03-06 22:36:02 +08:00
28390abaa5 fix tenantId手动添加 2024-03-06 22:19:05 +08:00
c0f1b15b10 fix 设备模板移除tenantId 2024-03-06 21:57:16 +08:00
14c63ead73 fix 优化查询判断 2024-03-06 21:40:34 +08:00
d3e0581963 fix 增加档案组分配检验 2024-03-06 21:30:31 +08:00
b6f02b433b fix 档案组分配人员触发任务下发 2024-03-06 20:55:20 +08:00
83a2bcd02a fix 设备任务下发调整 2024-03-06 20:37:55 +08:00
107b5b970f fix 编译错误 2024-03-06 19:43:43 +08:00
2e6602737a fix tenantId 2024-03-06 19:42:35 +08:00
21b7ec64b2 fix 默认值 2024-03-06 19:39:14 +08:00
64fbe4737d fix AbleSetNext值映射 2024-03-06 19:30:47 +08:00
9f771bc865 fix 优化细节和tenant问题 2024-03-06 19:22:14 +08:00
6352ffd9af fix 档案组分配人员控制 2024-03-06 17:34:14 +08:00
4bab1fd2fd fix ignoreTenant接口 2024-03-06 16:37:54 +08:00
cheche
060e408d1c Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-06 16:12:41 +08:00
cheche
2364b82540 fix 日志倒叙 2024-03-06 16:12:39 +08:00
973142db2f fix 更新获取请求日志 2024-03-06 16:11:12 +08:00
1f17e7a92b fix 移除逻辑删除字段 2024-03-06 16:05:11 +08:00
cheche
11690623a4 fix 修正语法错误 2024-03-06 14:05:36 +08:00
cheche
41d4807cca fix 修改营业点增加配置设备接口为post 2024-03-06 10:49:34 +08:00
cheche
ca239ce873 fix 修改点击关掉在职/离职报错 2024-03-06 10:40:59 +08:00
cheche
05369a691f feat 营业点增加配置设备接口 2024-03-06 10:23:55 +08:00
cheche
04ff6ae94a Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-06 09:25:39 +08:00
cheche
18a92b96d8 feat 消费机及离线设备详情 2024-03-06 09:25:34 +08:00
8157f0a01b fix 优化分组 2024-03-05 20:38:00 +08:00
eada9b6af9 feat 任务状态重置 2024-03-05 20:09:55 +08:00
9e2440fe77 fix 分页查询优化 2024-03-05 19:46:27 +08:00
4c959ccd40 fix 代码优化 2024-03-05 19:36:13 +08:00
22a1d9359d fix 增加索引,增加备注 2024-03-05 19:35:35 +08:00
778d100e72 feat 基地/租户tree 2024-03-05 19:35:03 +08:00
001f28c4c3 fix 返回Editable 2024-03-05 18:32:48 +08:00
5008f1dc6a fix 处理框架string null问题 2024-03-05 17:35:59 +08:00
6fbf517aa2 fix 编译错误 2024-03-05 17:07:57 +08:00
509662429b fix 移除无用接口 2024-03-05 17:06:12 +08:00
cheche
af4a8839b7 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-05 16:58:50 +08:00
cheche
ae29ddee87 fix 修改营业点分页模糊搜索条件 2024-03-05 16:58:46 +08:00
49dcf96bfc add 补充 2024-03-05 16:45:30 +08:00
888460ea99 fix 框架tenant问题;档案组和设备组特殊处理返回 2024-03-05 16:45:15 +08:00
cheche
40a0234bbf Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-05 16:03:59 +08:00
cheche
6f15149321 feat 营业点获取下面设备 2024-03-05 16:03:57 +08:00
c696f65481 fix 增加PCode条件 2024-03-05 15:53:40 +08:00
cheche
fede752f0f Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-05 15:45:24 +08:00
cheche
3de3fde888 fix 修改设备对应营业点 2024-03-05 15:45:21 +08:00
f6a155ae73 fix 优化细节 2024-03-05 15:30:44 +08:00
817eb9115a fix 系统分组生成调整 2024-03-05 15:29:25 +08:00
cheche
ec54d9ddbb fix 逻辑修正 2024-03-05 12:13:47 +08:00
cheche
6bdcb9124f Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-03-05 10:16:20 +08:00
cheche
d280d035e2 fix 离线判断 2024-03-05 10:16:15 +08:00
fde0c2394e fix 优化细节 2024-03-05 10:03:47 +08:00
cheche
640143eb6b fix 修正离线设备判断逻辑 2024-03-04 13:56:30 +08:00
cheche
bb236be406 fix 修改api控制器名称 2024-03-01 15:16:09 +08:00
cheche
80088df845 fix 移动api日志位置 2024-03-01 13:51:26 +08:00
83d5e4f166 fix 分页倒排 2024-03-01 12:20:37 +08:00
0dc2192dad fix 可获取记录设备保存时候自动产生初始日志 2024-03-01 12:03:28 +08:00
cheche
dc1ba173d1 fix 修改GetShiftCode()空异常 2024-03-01 11:04:14 +08:00
10cc93cf76 fix 过滤正在处理的上传任务设备 2024-02-29 13:43:53 +08:00
942330fd1d feat 增加任务类型获取 2024-02-29 13:02:41 +08:00
ea93b941e0 fix 过滤处理 2024-02-29 13:02:21 +08:00
a0140627c0 fix 下发任务状态,类型查询 2024-02-29 10:53:51 +08:00
205778fd9f fix 任务名称修改 2024-02-29 10:48:48 +08:00
d3521ec2de fix 优化查询 2024-02-29 10:43:35 +08:00
cheche
2fdc4d24f1 fix 档案详情添加返回字段 2024-02-28 16:09:21 +08:00
cheche
a36681bc70 fix 添加档案详情idclassname 2024-02-28 15:52:59 +08:00
cheche
e3d6f72243 fix 增加获取当前档案的下发记录 2024-02-28 12:13:25 +08:00
09165983cc fix 继承baseEntity 2024-02-27 18:42:20 +08:00
dd44750a97 fix 档案明细返回人脸base64 2024-02-27 18:25:31 +08:00
e61833fa81 feat 框架升级,代码整合 2024-02-27 18:15:46 +08:00
364deaf21e fix 接口修改为post 2024-02-27 17:30:57 +08:00
82faedcf41 fix 先移除redis优化 2024-02-27 15:25:57 +08:00
6b08cb58a3 fix 增加redis缓存优化速度 2024-02-27 15:02:14 +08:00
e4206131bb fix 实体修改 2024-02-27 15:01:34 +08:00
da9e7db359 fix userNos合并 2024-02-27 12:44:48 +08:00
87d7d62c20 fix 任务生成优化 2024-02-27 12:25:42 +08:00
33beb39408 fix 任务生成逻辑取反修改 2024-02-26 17:50:22 +08:00
96f89fa8d5 fix 上传日志增加serialno字段 2024-02-26 17:49:36 +08:00
b7a6e5e8db fix 升级changedb; 处理人脸token解析问题 2024-02-26 16:48:04 +08:00
55b6e957fe fix 数据库连接切换 2024-02-26 16:31:57 +08:00
3bf049a51e fix 优化apilog和设备上传log 2024-02-26 16:17:59 +08:00
cheche
d341f43009 fix 文件上传修改记录名称 2024-02-26 14:50:29 +08:00
cheche
a600cc953d Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-02-26 14:14:28 +08:00
cheche
afa21b5294 fix 添加判断逻辑 2024-02-26 14:14:24 +08:00
94ba5beca9 fix 任务增加door类型 2024-02-26 13:50:39 +08:00
cheche
5e29f013b8 fix 修改离线设备判断逻辑 2024-02-26 10:14:36 +08:00
90641ebdc7 fix fw 2024-02-23 21:59:58 +08:00
7ce3c65dc8 fix redis连接 2024-02-23 21:52:42 +08:00
58f4d69b4e fix 雪花id 2024-02-23 21:44:24 +08:00
bd00d3d0b8 fix 更新雪花id数据节点 2024-02-23 21:43:09 +08:00
412e5589e6 fix 参数控制非余额制消费 2024-02-23 21:06:47 +08:00
e259c3ab92 fix 心跳间隔控制 2024-02-23 21:06:31 +08:00
1ddebd4666 fix 设备分组保存逻辑控制 2024-02-23 20:46:38 +08:00
4efc708177 feat 换卡操作 2024-02-23 20:46:24 +08:00
07fdbd2f16 fix 心跳间隔 2024-02-23 19:30:59 +08:00
96cbaa1c3a fix 金额小数点 2024-02-23 19:22:08 +08:00
80c84069e1 fix 心跳任务获取数据为空 2024-02-23 19:21:49 +08:00
a0e9583229 fix 增加心跳任务 2024-02-23 19:15:59 +08:00
ae8b48a782 fix 索引,判断重复问题 2024-02-23 18:57:02 +08:00
d1dde626ef fix 日期排序 2024-02-23 18:20:43 +08:00
517a064295 fix 补充id字段 2024-02-23 18:15:00 +08:00
0e156159b1 fix 同步任务生成处理 2024-02-23 18:14:15 +08:00
bc812a30b9 fix 临时处理bug 2024-02-23 18:07:03 +08:00
0931d0bf53 fix 优化获取face速度 2024-02-23 17:43:57 +08:00
9b8acdb477 fix 枚举修改报错 2024-02-23 17:04:33 +08:00
e04954f471 feat 租户添加 2024-02-23 16:59:53 +08:00
f255a87138 fix 框架调整,优化数据返回 2024-02-23 16:20:24 +08:00
cheche
ef782d6892 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-02-23 15:23:47 +08:00
cheche
7fa18402d1 fix 获取最新版本路由 2024-02-23 15:23:16 +08:00
3e03b28a73 fix 增加保存餐次段 2024-02-23 15:20:44 +08:00
cheche
36188926d4 fix 修改下载链接域名 2024-02-23 15:19:16 +08:00
7c52b7fb1e fix 路由名称重复 2024-02-23 14:13:04 +08:00
7c0fa74767 fix 数据返回优化 2024-02-23 12:22:03 +08:00
b272373584 fix 营业点餐次修改 2024-02-23 12:12:30 +08:00
cheche
cbb26575ac fix 合并餐饮首页接口 2024-02-23 11:06:54 +08:00
cheche
e7a4075b78 fix 添加调用api权限 2024-02-23 10:09:22 +08:00
cheche
89f2f7b991 fix 修改文件上传大小限制 2024-02-23 09:29:10 +08:00
cheche
9f83188819 fix 修改apk大小 2024-02-22 19:15:47 +08:00
cheche
bbe5939887 fix xiugai 2024-02-22 18:30:58 +08:00
cheche
f3b17dc6b8 fix 删除url列 2024-02-22 18:25:19 +08:00
cheche
927dbcb47b Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-02-22 18:16:46 +08:00
cheche
cd5f7e115a fix 修改vername 2024-02-22 18:16:44 +08:00
83704bb017 fix dockerfile 2024-02-22 18:13:49 +08:00
4ee5703b65 fix 就餐增加权限控制 2024-02-22 18:12:28 +08:00
cheche
ada7fe99e4 解决redis配置冲突 2024-02-22 17:57:58 +08:00
cheche
fd5dda33ab fix 修改apk实体的name为string 2024-02-22 17:56:36 +08:00
0143b2aba1 fix 优化调整 2024-02-22 17:53:06 +08:00
4bd0c2403d fix 设备组数据展示,保存控制editable 2024-02-22 17:43:33 +08:00
78b92ab223 fix 配置tenant api 地址 2024-02-22 17:10:09 +08:00
0296f670e9 fix 恢复redis连接 2024-02-22 16:46:07 +08:00
e3710ad0a5 feat 批量上传人脸接口 2024-02-22 16:37:52 +08:00
77d3207bb4 fix 获取考勤人数 2024-02-22 16:37:35 +08:00
2a21e6bd5b fix 优化任务生成 2024-02-22 16:36:43 +08:00
cheche
f8e2ff4889 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-02-22 16:24:19 +08:00
cheche
d3c8c211bf feat 电子餐券申请/使用记录查询 2024-02-22 16:24:16 +08:00
f4acba8c6b fix 移除无用字段 2024-02-22 16:02:19 +08:00
82f942ed13 fix role,user查看; 设备状态 2024-02-22 15:32:24 +08:00
cheche
a197a0bfea Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-02-22 15:12:34 +08:00
cheche
40b8e1af68 feat 日/月消费走势接口 2024-02-22 15:12:31 +08:00
2d1678de9f fix 作为考勤设备判断 2024-02-22 15:03:31 +08:00
a08b08fbc1 fix 设备,设备分组调整 2024-02-22 15:00:51 +08:00
9f5c239832 fix 考勤任务生成处理 2024-02-22 15:00:21 +08:00
1ccacdf04d fix 更新注释和role-list 2024-02-22 14:46:43 +08:00
170b6a1202 feat 创建系统默认分组 2024-02-22 14:30:03 +08:00
cheche
9345cc6441 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-02-22 14:04:09 +08:00
cheche
b5d6ec8366 feat 查询消费机总数、离线设备数量、营业点数量、可消费人数、人均日消费额 2024-02-22 14:04:01 +08:00
e55a6793a7 fix 营业点类型枚举和考勤summary 2024-02-22 14:01:19 +08:00
951e1659f9 feat 角色管理 2024-02-22 13:11:17 +08:00
cheche
8e43cf36e8 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-02-22 10:12:10 +08:00
cheche
6d2d62d628 feat 获取api日志 2024-02-22 10:12:04 +08:00
322430da70 fix 处理同步gainfo 2024-02-21 19:27:39 +08:00
36824f0f57 fix 优化备注 2024-02-21 19:18:11 +08:00
67241be8e2 fix gainfosap同步 2024-02-21 19:09:34 +08:00
bce8a2bab3 fix 调整为同步处理 2024-02-21 19:04:09 +08:00
b4bf2848a3 fix log 2024-02-21 18:59:16 +08:00
9cc9b76b56 fix 异步问题 2024-02-21 18:57:04 +08:00
d2cf162694 fix 尝试处理iserviceprovider问题 2024-02-21 18:50:06 +08:00
d5e5485c52 fix log异常 2024-02-21 18:39:04 +08:00
fe4b7b0394 fix log chunk 2024-02-21 18:35:45 +08:00
177b0862f2 fix 补充日志和去重逻辑 2024-02-21 18:29:57 +08:00
a9c8ab7d00 fix 增加日志调试 2024-02-21 18:15:15 +08:00
7d20cf48df fix 配置处理 2024-02-21 18:02:07 +08:00
db14eb4fe3 Merge branch 'development' 2024-02-21 17:54:16 +08:00
5c2d40d180 fix 优化同步处理 2024-02-21 17:53:53 +08:00
cec93dd2cd Merge branch 'development' 2024-02-21 17:38:56 +08:00
9f16e24b9d fix 人员同步调整 2024-02-21 17:38:35 +08:00
ca0bc3b87f Merge branch 'development' 2024-02-21 17:24:44 +08:00
df607a6c4f fix 岗位同步修改 2024-02-21 17:24:09 +08:00
972e86373f Merge branch 'development' 2024-02-21 17:03:26 +08:00
64af61754a fix postition LANGU 字段类型 2024-02-21 17:03:04 +08:00
e491491192 Merge branch 'development' 2024-02-21 16:44:42 +08:00
732a477880 fix 处理部门树从00001000开始 2024-02-21 16:44:25 +08:00
82644f5e8a Merge branch 'development' 2024-02-21 16:26:15 +08:00
7fb913764e fix 机构数据同步处理 2024-02-21 16:25:37 +08:00
c92c43a86d Merge branch 'development' 2024-02-21 15:56:50 +08:00
58b90947d2 fix 字段类型修改 2024-02-21 15:55:55 +08:00
cae20563ae Merge branch 'development' 2024-02-21 15:21:23 +08:00
cheche
4c77130a18 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-02-21 15:20:04 +08:00
cheche
39343ba5ed fix 修改考勤设备在线、离线及总数路由 2024-02-21 15:19:59 +08:00
495c2f9897 fix baseUrl和作用域 2024-02-21 15:16:44 +08:00
5b40cfbd39 fix sap-api凭证 2024-02-21 15:15:12 +08:00
cheche
0632bee180 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-02-21 14:59:33 +08:00
cheche
ef60f1dffc feat 获取本基地管理员列表 2024-02-21 14:59:23 +08:00
a46151abfd fix db setting 2024-02-21 12:06:10 +08:00
849b7f98a4 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-02-21 11:46:30 +08:00
a2aa0de737 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-02-21 11:46:25 +08:00
cheche
7f7afb251c fix 设备数据和人员数据修改 2024-02-21 11:44:55 +08:00
cheche
6e492595f8 feat 二级路由更改及设备人员数据 2024-02-21 11:09:38 +08:00
01f3668879 fix 注释sql脚本生成 2024-02-21 10:39:12 +08:00
272e8db954 fix 更新数据库脚本 2024-02-20 19:01:40 +08:00
f3f62670b8 fix redis密码 2024-02-20 15:22:51 +08:00
56b6caf76e fix 生产环境配置 2024-02-20 15:13:20 +08:00
cheche
213c53839c fix 部门树分页添加no条件搜索 2024-02-20 11:15:23 +08:00
cheche
1f360c8005 feat 部门数分页 2024-02-20 11:07:04 +08:00
28871aa450 fix 功能调整 2024-02-01 17:46:40 +08:00
cheche
2f5f6be7d7 fix 设备分页返回属性新增Type 2024-02-01 10:17:43 +08:00
cheche
96cdc5a1ef fix 修改doors数量 2024-02-01 09:53:14 +08:00
cheche
b1927ef9ca fix 设备/组新城枚举及调整 2024-01-31 17:32:00 +08:00
cheche
64c113cd6a fix 统计结果修正 2024-01-31 14:07:02 +08:00
cheche
21bd830002 fix 枚举调整 2024-01-31 11:02:41 +08:00
cheche
29944fb5d3 fix 考勤记录 2024-01-30 17:40:31 +08:00
cheche
bf901df7d6 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-30 17:31:16 +08:00
cheche
4e88466bff feat 设备和设备组功能属性 2024-01-30 17:31:12 +08:00
2a432088aa fix hangfire切换到redis 2024-01-30 17:19:00 +08:00
7e90058587 fix ping db 2024-01-30 17:04:56 +08:00
cheche
0b02a95f66 fix 档案详情 2024-01-30 14:53:31 +08:00
cheche
025a05a533 fix 请求体枚举参数限定 2024-01-30 14:37:57 +08:00
cheche
c17a29db27 fix 本地上传调整 2024-01-30 14:14:17 +08:00
cheche
4044f8fcbf fix 考勤下发展示状态修改 2024-01-30 13:04:15 +08:00
cheche
4fddd284a6 fix 上传路由更改 2024-01-30 11:43:12 +08:00
cheche
71de7baac6 fix 考勤下发任务记录分页 2024-01-30 09:51:41 +08:00
cheche
600085a0bd Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-29 18:16:00 +08:00
cheche
9673f173b2 feat 记录查询接口 2024-01-29 18:15:48 +08:00
9638bf270a fix identity敏感信息开启 2024-01-29 10:37:13 +08:00
4cf0b626e5 fix 处理描述 2024-01-26 19:07:48 +08:00
61c7116608 fix 数据库域问题 2024-01-26 19:01:01 +08:00
b69a170b96 fix 配置处理 2024-01-26 18:49:29 +08:00
522ac9b05e fix 处理名称展示 2024-01-26 18:33:09 +08:00
1c295f50fb fix 重建dockerfile 2024-01-26 18:24:47 +08:00
05c2073ea7 fix 代码合并,minio上传文件 2024-01-26 18:22:57 +08:00
cheche
f83afdb4d0 fix 查询分页 2024-01-26 17:40:23 +08:00
cheche
40c655c9ff fix 调整 2024-01-26 15:35:25 +08:00
cheche
d435004a97 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-26 15:34:39 +08:00
cheche
d4b2ee4662 fix 查询单价保留两位小数 2024-01-26 15:34:24 +08:00
7ec29ab113 fix 档案增加搜索 2024-01-26 15:11:17 +08:00
cheche
9a88977339 fix 取消必选costid 2024-01-26 11:55:15 +08:00
cheche
6a2f8e4a9c fix 限制本地上传大小 2024-01-26 10:31:57 +08:00
cheche
930ba41220 fix 整理minio 2024-01-26 10:26:06 +08:00
cheche
b5ccf3008e Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-26 09:27:17 +08:00
cheche
3b0f923c46 feat 本地上传 2024-01-26 09:27:09 +08:00
7f6091d757 fix 查询缺少字段 2024-01-25 17:26:55 +08:00
93b4f2a5aa fix 请求方式修改 2024-01-25 17:20:45 +08:00
8bbdac9c17 fix 配置值范围整理,保存配置处理 2024-01-25 17:15:41 +08:00
55cce895c9 fix 优化查询null值,注释 2024-01-25 16:59:30 +08:00
cheche
b371a5b73e Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-25 15:31:08 +08:00
cheche
c163e2098f fix 成本中心统计 2024-01-25 15:31:02 +08:00
54510f28ea fix 移除brand字段 2024-01-25 14:43:21 +08:00
83c3238a14 fix 列json格式移除 2024-01-25 14:36:33 +08:00
5bd0cec44e fix 编译错误 2024-01-25 14:30:25 +08:00
e669134fea fix 单独的设备分页类型 2024-01-25 14:29:33 +08:00
f9c5a816b1 fix 调整任务时间,实体映射类型 2024-01-25 14:14:27 +08:00
cheche
ff6a89865a 合并Minlopack冲突 2024-01-25 12:24:42 +08:00
cheche
4f5a2c1c2e feat minlo初步搭建 2024-01-25 12:23:33 +08:00
7044fc49f2 fix 字段类型调整 2024-01-25 11:03:28 +08:00
25ea734d08 fix 注释minio注入 2024-01-25 10:47:28 +08:00
4396d7a672 fix 注释表自动生成 2024-01-24 20:56:30 +08:00
51c80a242e fix 调试大华设备对接 2024-01-24 20:46:55 +08:00
cheche
a36ff46722 fix 根据营业点号获取餐次名称为null 2024-01-24 19:08:06 +08:00
cheche
eb235ae154 fix 获取餐次guid 2024-01-22 17:38:07 +08:00
0fa8cba30a fix 优化判断 2024-01-22 10:48:18 +08:00
e749a6cc14 fix 升级到0.5.2,优化任务生成 2024-01-22 09:45:39 +08:00
cheche
ce939b0a29 fix 更新Kurisu.AspNetCore (0.5.1) 2024-01-22 09:21:07 +08:00
cheche
82574d78a4 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-19 15:08:30 +08:00
c4891bd807 fix 枚举,实体调整 2024-01-19 13:31:17 +08:00
6480501a03 fix 补充注释 2024-01-19 13:30:52 +08:00
7f05cbc368 fix 下发任务结构修改,根据类型处理 2024-01-19 13:30:35 +08:00
cheche
f002cf4e45 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-19 11:11:38 +08:00
0ae4737c0f fix 调度时间调整 2024-01-19 10:29:13 +08:00
ce8f64fee3 fix 优化下发创建 2024-01-18 19:00:05 +08:00
be2552be32 fix 修改区间判断 2024-01-18 18:30:59 +08:00
cheche
bf64647d71 fix todo 2024-01-18 18:27:31 +08:00
e7b74ff2b3 fix 修改区间判断 2024-01-18 18:24:02 +08:00
fd7034ad49 fix 查询调整 2024-01-18 17:50:56 +08:00
a7b01ff7b3 fix 消费区间判断 2024-01-18 17:46:38 +08:00
cheche
25e88710b2 fix 时间判断 2024-01-18 17:32:50 +08:00
cheche
a316cfcb8c Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-18 17:23:45 +08:00
441b173469 fix 减少冗余字段,兼容userId 2024-01-18 17:23:20 +08:00
cheche
13f8bde2ea fix 消费时间判断ConsumeIsPresent2Async 2024-01-18 17:20:19 +08:00
ae946a0bcc fix 时间区间判断 2024-01-18 15:43:45 +08:00
9440f4cf58 fix 重置消费类型处理 2024-01-18 13:10:13 +08:00
cheche
ef96cae0bf fix 统计修正 2024-01-18 11:03:32 +08:00
cheche
2000ea3a0e feat 批量获取人口post 2024-01-17 18:39:56 +08:00
cheche
3b6022e2c0 fix shift取消名称 2024-01-17 17:57:35 +08:00
cheche
7c36528646 fix 去除餐次名称 2024-01-17 16:29:00 +08:00
cheche
c97daa2554 fix 批量人脸 2024-01-17 14:25:47 +08:00
cheche
ba9211ef9e fix 批量获取人脸 2024-01-17 14:10:30 +08:00
cheche
5e8bd7b08f Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-17 10:42:24 +08:00
cheche
7aa2a071e0 feat 批量获取人脸照 2024-01-17 10:42:18 +08:00
fddb0b12fc fix 批量更新任务状态 2024-01-17 10:42:09 +08:00
cheche
fc5ee32f93 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-17 09:15:55 +08:00
cheche
cda9b86212 fix 消费记录查询 2024-01-17 09:15:49 +08:00
02b38b9b47 add 增加档案id返回 2024-01-16 19:13:07 +08:00
be5b702787 fix 重构数据同步 2024-01-16 18:59:28 +08:00
cheche
9b0caabac4 fix 消费查询接口修改 2024-01-16 17:38:02 +08:00
a520782f36 fix 字段命名错误 2024-01-16 15:30:22 +08:00
3377d08631 fix 人脸照片相同不产生任务 2024-01-16 15:22:59 +08:00
092beb5632 fix 优化任务生成userNos为空情况 2024-01-16 15:11:40 +08:00
ae84b48795 fix 成本日期判断 2024-01-16 14:37:45 +08:00
c2b5e12ffe fix 人脸修改任务生成 2024-01-16 14:36:44 +08:00
9758f3e4b5 feat serilog日志输出到mysql 2024-01-16 14:23:53 +08:00
cheche
1979b7297c Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-16 14:04:18 +08:00
cheche
e7e186b9a1 feat 消费记录查询 2024-01-16 14:04:03 +08:00
d65ac0912d fix 回复时间区间判断 2024-01-16 12:04:48 +08:00
6ba39eabc1 fix 返回id 2024-01-16 11:10:24 +08:00
6cd7f63b98 fix 查询汇总 2024-01-15 17:56:34 +08:00
b8364815ac feat 获取考勤设备 2024-01-15 17:37:21 +08:00
01ec274031 feat 根据工号获取人脸链接 2024-01-15 16:53:41 +08:00
a0384e5179 fix 日志级别 2024-01-15 16:48:03 +08:00
7a42f4938e fix 转成接口方法 2024-01-15 15:45:01 +08:00
da0ceaa939 fix 日志级别处理 2024-01-15 15:33:06 +08:00
ea5761d9b4 fix 档案组,设备权限分配 2024-01-15 14:55:26 +08:00
7d2c041bb9 fix 调整设备权限配置 2024-01-15 13:48:13 +08:00
10f0918753 fix 人脸url重新获取 2024-01-15 13:47:29 +08:00
8285e9e7da add 补充缺失代码 2024-01-15 13:37:38 +08:00
cheche
415b985bb3 fix 获取token修改 2024-01-15 13:36:34 +08:00
cheche
7013f1507e Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-15 12:57:54 +08:00
cheche
de74bc6868 feat 获取新token 2024-01-15 12:57:47 +08:00
4102422792 add 汇总金额 2024-01-15 10:49:45 +08:00
5b818c8e10 feat 增加作废明细 2024-01-15 10:14:25 +08:00
529d5f732c fix 删除任务无需返回多余信息 2024-01-14 23:03:44 +08:00
b957ea5f4d feat 任务下发生成 2024-01-14 22:50:04 +08:00
64c15ad305 fix 优化任务领取,任务状态更新 2024-01-14 19:59:38 +08:00
79bc32c959 feat 设备任务领取 2024-01-13 20:53:04 +08:00
24b026aa04 fix 查询设备号匹配问题 2024-01-12 17:51:30 +08:00
583e63707b fix 优化参数值数据 2024-01-12 17:02:22 +08:00
cb2562c8b8 fix 优化消费充值代码 2024-01-12 16:18:44 +08:00
74137c9f44 fix 取消base64校验 2024-01-12 16:17:30 +08:00
cheche
2e852c3d49 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-12 16:06:14 +08:00
cheche
e86d3a6140 fix 通过唯一号获取设备 2024-01-12 16:06:06 +08:00
7e08811190 fix 取消自动生成表结构 2024-01-12 16:03:11 +08:00
b98c378ed5 fix 字段补充处理 2024-01-12 16:02:03 +08:00
cheche
e5f5c52f7c fix 获取唯一设备 2024-01-12 15:58:48 +08:00
cheche
fd7b5c5951 fix 修正 2024-01-12 15:53:06 +08:00
cheche
3dfa65ea9e fix 获取修改设备 2024-01-12 15:51:49 +08:00
cheche
0c28e8d4d3 fix 获取设备 2024-01-12 15:49:41 +08:00
cheche
310620b348 feat 获取设备 2024-01-12 15:42:55 +08:00
cheche
092beab4b7 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-12 12:40:50 +08:00
cheche
45dbd5ceeb fix 配置时间校验分秒 2024-01-12 12:40:35 +08:00
bbab1f4460 fix 处理传入日期的开始时间 2024-01-12 11:40:06 +08:00
c78b4f923c feat 增加post设备消费记录 2024-01-12 11:15:52 +08:00
cheche
62a15bef03 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-12 11:12:37 +08:00
cheche
27fbd7a282 fix 取消device忽略租户id 2024-01-12 11:12:31 +08:00
a659d49a3f fix 就餐参数配置检验调整 2024-01-12 11:11:42 +08:00
cheche
cd2dedc4f4 fix 取消device字段 2024-01-12 10:25:41 +08:00
cheche
43a13a137f Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-12 10:05:49 +08:00
cheche
8158951574 fix 添加设备类型和使用场景字段 2024-01-12 10:05:44 +08:00
f888361ee0 add 补充缺失文件 2024-01-11 19:43:12 +08:00
15e90d4d16 feat 人脸上传,内部支持客户端授权 2024-01-11 19:38:23 +08:00
d35b0043c3 fix 查询根据成本日期 2024-01-11 18:21:53 +08:00
cheche
9a5d9ecd4f fix CanteenSettingItemEnumType参数校验异常信息修正 2024-01-11 18:18:51 +08:00
cheche
1133de5850 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-11 18:08:24 +08:00
cheche
3f91c6109b fix CanteenSettingItemEnumType参数校验 2024-01-11 18:08:14 +08:00
0ad79dbb23 fix FromQuery 2024-01-11 16:39:31 +08:00
e03cb26174 fix userId --> userNo 2024-01-11 16:37:17 +08:00
5d1b3ad0f7 feat 设备考勤记录考勤上传 2024-01-11 16:31:23 +08:00
353844f348 feat 当前人员的消费记录 2024-01-11 16:06:02 +08:00
0ac04b0d2d fix 查询错误 2024-01-11 15:54:30 +08:00
6af019485d fix 字段修改,消费记录设备查询增加日期 2024-01-11 15:22:30 +08:00
212aa2b65d feat 设备获取消费记录 2024-01-11 15:06:07 +08:00
bfecdacb76 fix 取消匿名访问 2024-01-11 14:49:31 +08:00
1e98d9816a fix 字段名称,消费金额,实体注解 2024-01-11 14:26:52 +08:00
cheche
7aa907a049 合并今日消费记录冲突 2024-01-11 13:58:40 +08:00
cheche
b278884fcf fix 当天消费记录修正 2024-01-11 13:55:22 +08:00
16813c10f4 fix 优化消费代码处理 2024-01-11 11:53:26 +08:00
8c5819b18b fix 实体修改 2024-01-11 10:28:34 +08:00
34073e0db0 feat 设备上传记录 2024-01-11 10:28:11 +08:00
026fd7b18a fix todo 2024-01-10 19:10:45 +08:00
1738e52d8d fix 区间判断临时处理 2024-01-10 19:10:38 +08:00
3e5e9e4d0a fix 返回激活码 2024-01-10 18:02:39 +08:00
46b0965fd9 fix 基础字段处理 2024-01-10 17:37:54 +08:00
54835e6cae fix 设备注册自动新增 2024-01-10 17:33:27 +08:00
cheche
2e51a13c3d Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-10 17:13:30 +08:00
cheche
e7e7e78fd5 fix 订单有效 2024-01-10 17:13:24 +08:00
c9c2de80b7 fix 获取餐别增加基地信息 2024-01-10 17:11:36 +08:00
5915264df9 fix 设备对接接口忽略tenant 2024-01-10 16:53:47 +08:00
e596367222 fix 取消获取餐别授权 2024-01-10 16:43:54 +08:00
cheche
15dfaf48dd Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-10 16:41:05 +08:00
a23058b239 fix 取消授权 2024-01-10 16:40:52 +08:00
cheche
97f9d94846 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-10 16:39:51 +08:00
5e9d4ac2a6 fix 调整消费处理,配置文件显示sql 2024-01-10 16:39:12 +08:00
cheche
be88816918 合并 2024-01-10 16:24:00 +08:00
cheche
8ae0efe249 fix 调整 2024-01-10 16:23:20 +08:00
7c242370fc fix 注释,下发任务状态分页 2024-01-10 16:13:24 +08:00
8dba9e9a3a feat 获取当前人员信息 2024-01-10 14:51:38 +08:00
be581e43e3 add 档案增加身份认证用户ID 2024-01-10 13:35:28 +08:00
cd31e3fc58 fix 人事范围调用处理 2024-01-10 11:44:59 +08:00
cheche
21e945727b fix appsetting 2024-01-10 11:31:09 +08:00
cheche
4a969f586a Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-10 11:21:24 +08:00
407d3fbfd4 fix identity tables 2024-01-10 11:15:41 +08:00
cheche
8fe4005ae7 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-10 11:09:18 +08:00
cheche
0e45532a01 fix 订餐测试 2024-01-10 11:09:00 +08:00
76558e2f0a feat 升级版本, 设备权限 2024-01-10 11:06:15 +08:00
4b7a0f8682 fix 基础数据代码调整 2024-01-09 17:56:24 +08:00
cheche
2ac9e4ceb2 fix BasicType类型修正 2024-01-09 16:28:58 +08:00
cheche
3d911d4cdb fix 获取档案类型数据 2024-01-09 12:04:21 +08:00
cheche
2e6c30e305 fix 档案类型修正 2024-01-09 11:25:05 +08:00
cheche
25bdd1edf8 feat 档案表固定字段下拉列表及数据 2024-01-09 09:47:55 +08:00
cheche
bd20152422 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-09 09:07:53 +08:00
cheche
4bc02bd170 fix 周期任务时间修正 2024-01-09 09:07:47 +08:00
19bbf9a0fd fix 补充文件 2024-01-08 20:53:41 +08:00
bb4c617340 fix 用户授权问题,档案调整, 2024-01-08 20:49:25 +08:00
cheche
598444fb96 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-08 11:39:21 +08:00
cheche
8028376195 feat 档案表下拉列表 2024-01-08 11:39:14 +08:00
a4333f7f45 fix 补充代码 2024-01-08 11:36:38 +08:00
b341a59359 fix 调整无授权处理,增加检查设备是否存在接口 2024-01-08 11:36:10 +08:00
2e300811d5 fix 档案字段调整 2024-01-08 11:35:15 +08:00
dc3f22ac0c fix RequireHttpsMetadata 2024-01-08 10:53:03 +08:00
d712832434 fix prod setting 2024-01-08 10:47:15 +08:00
6bb12f0deb add user-api 2024-01-08 10:38:01 +08:00
92cba5c728 fix sln 2024-01-08 10:35:38 +08:00
f4e401d649 fix 用户和菜单权限联合 2024-01-08 10:35:25 +08:00
82e77027e3 fix 字段名称 2024-01-08 10:11:06 +08:00
cheche
18eda12a29 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-06 17:42:13 +08:00
cheche
062e2538b5 fix 同步接口 2024-01-06 17:42:06 +08:00
1180362376 fix 更新认证配置信息和注释 2024-01-05 15:16:25 +08:00
ba87dc6c86 fix func字段处理 2024-01-05 12:29:29 +08:00
dcc1f19219 fix 餐次分页筛选 2024-01-05 10:51:54 +08:00
08c4c096e8 feat 设备组分配设备,获取设备 2024-01-04 20:38:24 +08:00
a8a535153a fix 餐饮订单参数控制,设备组参数返回 2024-01-04 19:47:31 +08:00
fab6df6910 fix 组织架构同步代码删除 2024-01-04 15:13:39 +08:00
cheche
894d838b5f Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-04 14:42:42 +08:00
cheche
71ebba471b 解决配置文件冲突 2024-01-04 14:42:38 +08:00
ea51bac045 fix 增加设备下发表,枚举调整 2024-01-04 14:41:06 +08:00
cheche
3d665259b3 feat 人事同步 2024-01-04 14:40:04 +08:00
a51ad680f3 fix 增加post请求方式 2024-01-04 11:26:40 +08:00
d8cf554bdf fix 注册表字段类型调整 2024-01-03 17:36:48 +08:00
bcec08d10a fix 补充注释,接口兼容设备 2024-01-03 17:34:19 +08:00
ebffe59360 fix ui展示 2024-01-02 22:11:33 +08:00
baf18bec47 Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-02 22:00:06 +08:00
8fe7a0c1bd fix auth 2024-01-02 21:58:41 +08:00
cheche
bb7765ab1f Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2024-01-02 09:10:04 +08:00
cheche
a4714544ba feat 增加hangfire账户密码 2024-01-02 09:09:56 +08:00
1829d8f6a5 fix dockerfile .net 版本 2023-12-29 17:52:51 +08:00
25436c881c fix 代码命名修改,格式调整 2023-12-29 16:54:30 +08:00
cheche
8169d7da5c Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development 2023-12-29 16:41:33 +08:00
cheche
66eacb685a feat Hnagfire初步搭建 2023-12-29 16:41:24 +08:00
74d8bd7b3f feat 设备分组 2023-12-29 10:09:51 +08:00
f5c8f659e4 fix 档案表代码调整,代码位置 2023-12-28 17:57:21 +08:00
cheche
ef7e08fc13 fix:修复GainfoController位置 2023-12-28 17:39:30 +08:00
cheche
12b2f6dc60 解决GainfoService冲突 2023-12-28 17:29:45 +08:00
cheche
f8871da7b4 feat:增加入职离职 2023-12-28 17:26:55 +08:00
d7cf07d940 feat 设备连接注册,sap人事范围,部门 2023-12-28 16:04:00 +08:00
cheche
25f7b3270c fix:修改档案表crud 2023-12-28 15:37:49 +08:00
cheche
a32d66b77e 档案 2023-12-28 13:45:31 +08:00
cheche
edb46a68f4 MealUsersController冲突 2023-12-28 13:42:38 +08:00
cheche
9195e7d15d 档案表crud 2023-12-28 13:39:15 +08:00
611b612177 fix sys模块代码迁移 2023-12-28 11:43:48 +08:00
dc5811695c refactor 代码文件位置调整 2023-12-27 09:49:17 +08:00
ed868331e0 fix 实体位置 2023-12-26 17:05:54 +08:00
8b59323526 fix version,实体位置 2023-12-26 17:05:43 +08:00
dae4394bbf fix dns name 2023-12-26 15:58:51 +08:00
c46a1cdfe1 fix RequireHttpsMetadata=false 2023-12-26 15:54:41 +08:00
cda3f2814e fix pat setting 2023-12-26 15:50:03 +08:00
41e586e1cc fix 环境setting 2023-12-26 15:44:27 +08:00
2b8aa5ff5b update version 2023-12-26 11:38:54 +08:00
c998795595 update 版本升级 2023-12-26 11:02:04 +08:00
f5d2b41415 fix dockerfile 2023-12-25 15:23:44 +08:00
da09dd9f0f init 项目代码初始化 2023-12-25 11:01:55 +08:00
15112c0ddd Initial commit 2023-12-25 10:46:02 +08:00
1040 changed files with 57088 additions and 189 deletions

25
.dockerignore Normal file
View File

@@ -0,0 +1,25 @@
**/.classpath
**/.dockerignore
**/.env
**/.git
**/.gitignore
**/.project
**/.settings
**/.toolstarget
**/.vs
**/.vscode
**/*.*proj.user
**/*.dbmdl
**/*.jfm
**/azds.yaml
**/bin
**/charts
**/docker-compose*
**/Dockerfile*
**/node_modules
**/npm-debug.log
**/obj
**/secrets.dev.yaml
**/values.dev.yaml
LICENSE
README.md

141
.editorconfig Normal file
View File

@@ -0,0 +1,141 @@
[*.cs]
# CS1591: 缺少对公共可见类型或成员的 XML 注释
dotnet_diagnostic.CS1591.severity = none
[*.cs]
#### 命名样式 ####
# 命名规则
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.private_or_internal_field_should_be__field_camel.severity = suggestion
dotnet_naming_rule.private_or_internal_field_should_be__field_camel.symbols = private_or_internal_field
dotnet_naming_rule.private_or_internal_field_should_be__field_camel.style = _field_camel
# 符号规范
dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interface.required_modifiers =
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types.required_modifiers =
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.non_field_members.required_modifiers =
dotnet_naming_symbols.private_or_internal_field.applicable_kinds = field
dotnet_naming_symbols.private_or_internal_field.applicable_accessibilities = internal, private, private_protected
dotnet_naming_symbols.private_or_internal_field.required_modifiers =
# 命名样式
dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix =
dotnet_naming_style.begins_with_i.word_separator =
dotnet_naming_style.begins_with_i.capitalization = pascal_case
dotnet_naming_style.pascal_case.required_prefix =
dotnet_naming_style.pascal_case.required_suffix =
dotnet_naming_style.pascal_case.word_separator =
dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_naming_style.pascal_case.required_prefix =
dotnet_naming_style.pascal_case.required_suffix =
dotnet_naming_style.pascal_case.word_separator =
dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_naming_style._field_camel.required_prefix = _
dotnet_naming_style._field_camel.required_suffix =
dotnet_naming_style._field_camel.word_separator =
dotnet_naming_style._field_camel.capitalization = camel_case
csharp_using_directive_placement = outside_namespace:silent
csharp_style_expression_bodied_methods = false:silent
csharp_style_expression_bodied_constructors = false:silent
csharp_style_expression_bodied_operators = false:silent
csharp_style_expression_bodied_properties = true:silent
csharp_style_expression_bodied_indexers = true:silent
csharp_style_expression_bodied_accessors = true:silent
csharp_style_expression_bodied_lambdas = true:silent
csharp_style_expression_bodied_local_functions = false:silent
csharp_style_conditional_delegate_call = true:suggestion
csharp_style_var_for_built_in_types = false:silent
csharp_style_var_when_type_is_apparent = false:silent
csharp_style_var_elsewhere = false:silent
csharp_prefer_simple_using_statement = true:suggestion
csharp_prefer_braces = true:silent
csharp_style_namespace_declarations = block_scoped:silent
csharp_style_prefer_method_group_conversion = true:silent
csharp_style_prefer_top_level_statements = true:silent
csharp_style_prefer_primary_constructors = true:suggestion
csharp_prefer_static_local_function = true:suggestion
[*.vb]
#### 命名样式 ####
# 命名规则
dotnet_naming_rule.interface_should_be_以_i_开始.severity = suggestion
dotnet_naming_rule.interface_should_be_以_i_开始.symbols = interface
dotnet_naming_rule.interface_should_be_以_i_开始.style = 以_i_开始
dotnet_naming_rule.类型_should_be_帕斯卡拼写法.severity = suggestion
dotnet_naming_rule.类型_should_be_帕斯卡拼写法.symbols = 类型
dotnet_naming_rule.类型_should_be_帕斯卡拼写法.style = 帕斯卡拼写法
dotnet_naming_rule.非字段成员_should_be_帕斯卡拼写法.severity = suggestion
dotnet_naming_rule.非字段成员_should_be_帕斯卡拼写法.symbols = 非字段成员
dotnet_naming_rule.非字段成员_should_be_帕斯卡拼写法.style = 帕斯卡拼写法
# 符号规范
dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected
dotnet_naming_symbols.interface.required_modifiers =
dotnet_naming_symbols.类型.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.类型.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected
dotnet_naming_symbols.类型.required_modifiers =
dotnet_naming_symbols.非字段成员.applicable_kinds = property, event, method
dotnet_naming_symbols.非字段成员.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected
dotnet_naming_symbols.非字段成员.required_modifiers =
# 命名样式
dotnet_naming_style.以_i_开始.required_prefix = I
dotnet_naming_style.以_i_开始.required_suffix =
dotnet_naming_style.以_i_开始.word_separator =
dotnet_naming_style.以_i_开始.capitalization = pascal_case
dotnet_naming_style.帕斯卡拼写法.required_prefix =
dotnet_naming_style.帕斯卡拼写法.required_suffix =
dotnet_naming_style.帕斯卡拼写法.word_separator =
dotnet_naming_style.帕斯卡拼写法.capitalization = pascal_case
dotnet_naming_style.帕斯卡拼写法.required_prefix =
dotnet_naming_style.帕斯卡拼写法.required_suffix =
dotnet_naming_style.帕斯卡拼写法.word_separator =
dotnet_naming_style.帕斯卡拼写法.capitalization = pascal_case
[*.{cs,vb}]
dotnet_style_qualification_for_field = false:silent
dotnet_style_qualification_for_property = false:silent
dotnet_style_qualification_for_method = false:silent
dotnet_style_qualification_for_event = false:silent
dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
end_of_line = crlf

192
.gitignore vendored
View File

@@ -1,4 +1,3 @@
# ---> VisualStudio
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
@@ -131,9 +130,7 @@ $tf/
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
_ReSharper*
# TeamCity is a build add-in
_TeamCity*
@@ -155,7 +152,6 @@ coverage*.info
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
@@ -167,7 +163,6 @@ AutoTest.Net/
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
@@ -180,44 +175,12 @@ DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
@@ -233,30 +196,10 @@ _pkginfo.txt
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
@@ -269,134 +212,5 @@ ServiceFabricBackup/
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
*.vbp
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
*.dsw
*.dsp
# Visual Studio 6 technical files
*.ncb
*.aps
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# Visual Studio History (VSHistory) files
.vshistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
# VS Code files for those working on multiple tools
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
# Local History for Visual Studio Code
.history/
# Windows Installer files from build outputs
*.cab
*.msi
*.msix
*.msm
*.msp
# JetBrains Rider
*.sln.iml
/Src/Dlhis.Canteen/App
/Src/Dlhis.Sys/App

33
Dlhis.Jinko.Face.slnx Normal file
View File

@@ -0,0 +1,33 @@
<Solution>
<Folder Name="/Basic/">
<Project Path="Src\Dlhis.Basic.Api\Dlhis.Basic.Api.csproj" />
<Project Path="Src\Dlhis.Basic\Dlhis.Basic.csproj" />
<Project Path="Src\Dlhis.Dh.Api\Dlhis.Dh.Api.csproj" />
<Project Path="Src\Dlhis.InfoCheck.Api\Dlhis.InfoCheck.Api.csproj" />
<Project Path="Src\Dlhis.InfoCheck\Dlhis.InfoCheck.csproj" />
<Project Path="Src\Dlhis.Jip.Api\Dlhis.Jip.Api.csproj" />
</Folder>
<Folder Name="/Canteen/">
<Project Path="Src\Dlhis.Canteen.Api\Dlhis.Canteen.Api.csproj" />
<Project Path="Src\Dlhis.Canteen\Dlhis.Canteen.csproj" />
</Folder>
<Folder Name="/External/">
<Project Path="Src\Dlhis.External\Dlhis.External.csproj" />
</Folder>
<Folder Name="/Message/">
<Project Path="Src\Dlhis.Message\Dlhis.Message.csproj" />
</Folder>
<Folder Name="/Scheduled/">
<Project Path="Src\Dlhis.Dormitory.Api\Dlhis.Dormitory.Api.csproj" />
<Project Path="Src\Dlhis.ScheduledTask\Dlhis.ScheduledTask.csproj" />
</Folder>
<Folder Name="/Sys/">
<Project Path="Src\Dlhis.Sys.Api\Dlhis.Sys.Api.csproj" />
<Project Path="Src\Dlhis.Sys\Dlhis.Sys.csproj" />
</Folder>
<Project Path="Src\Dlhis.Constants\Dlhis.Constants.csproj" />
<Project Path="Src\Dlhis.DataPermission.Model\Dlhis.DataPermission.Model.csproj" />
<Project Path="Src\Dlhis.Entity\Dlhis.Entity.csproj" />
<Project Path="Src\Dlhis.ExcelHelper\Dlhis.ExcelHelper.csproj" />
<Project Path="Src\Dlhis.Middle\Dlhis.Middle.csproj" />
</Solution>

View File

@@ -0,0 +1,15 @@
using Kurisu.RemoteCall.Abstractions;
using Microsoft.Extensions.DependencyInjection;
namespace Dlhis.Basic.Api.ClientHandler;
public class LongRunClientHandler : IHttpRemoteCallPolicyHandler
{
/// <inheritdoc />
public IHttpClientBuilder ConfigureHttpClient(IHttpClientBuilder builder)
{
builder.ConfigureHttpClient(x => { x.Timeout = TimeSpan.FromHours(1); });
return builder;
}
}

View File

@@ -0,0 +1,22 @@
using System.Text;
using Kurisu.RemoteCall;
using Kurisu.RemoteCall.Abstractions;
using Newtonsoft.Json;
namespace Dlhis.Basic.Api.ContentHandlers;
public class CodeContentHandler : IContentHandler
{
/// <inheritdoc />
public HttpContent Create(List<ParameterValue> values)
{
var code = values.First(x => x.Parameter.Name == "code").GetValue<string>();
var obj = new
{
code,
};
var json = JsonConvert.SerializeObject(obj);
return new StringContent(json, Encoding.UTF8, "application/json");
}
}

View File

@@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>disable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Kurisu.RemoteCall" Version="0.4.8" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,7 @@
namespace Dlhis.Basic.Api.Dto;
public class BusinessPlaceDto
{
public Guid Code { get; set; }
public string Name { get; set; }
}

View File

@@ -0,0 +1,13 @@
using Dlhis.Basic.Api.Dto;
using Kurisu.RemoteCall.Attributes;
namespace Dlhis.Basic.Api;
[RequestResultHandler]
[EnableRemoteClient(Name = "basic-service", BaseUrl = "${InternalRequest:BasicRequestUrl}")]
public interface IBusinessPlacePermissionsApi
{
[Auth]
[Get("/api/businessplacepermissions/my")]
Task<List<BusinessPlaceDto>> GetMyAsync();
}

View File

@@ -0,0 +1,20 @@
using Dlhis.Basic.Api.Requests;
using Kurisu.RemoteCall.Attributes;
namespace Dlhis.Basic.Api;
[RequestLog]
[RequestResultHandler]
[EnableRemoteClient(Name = "message-service", BaseUrl = "${InternalRequest:BasicRequestUrl}")]
public interface IDingTalkApi
{
[Post("/api/messages/dingtalk/workmessage")]
Task SendWorkMessageAsync(JinkoSendWorkMessageRequest request);
[Post("/api/messages/dingtalk/workgrid/workmessage")]
Task SendWorkMessageByWorkGridAsync(JinkoSendWorkMessageRequest request);
[Post("/api/messages/dingtalk/messageurl")]
Task SendMessageUrlAsync(DingTalkMessageUrlRequest request);
}

View File

@@ -0,0 +1,20 @@
using Kurisu.RemoteCall.Attributes;
namespace Dlhis.Basic.Api;
[RequestResultHandler]
[EnableRemoteClient(Name = "basic-service", BaseUrl = "${InternalRequest:BasicRequestUrl}")]
public interface IFactorySettingApi
{
/// <summary>
/// <see cref="Vouchers.Controllers.VouchersController.CreateAsync"/> <see cref="VoucherEnumType"/>
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
[Get("/api/factorySetting/enableBirthdayVoucherFactories")]
Task<List<string>> GetEnableBirthdayVoucherFactoriesAsync();
[Get("/api/factorySetting/enableUseBirthdayVoucherFactories")]
Task<List<string>> GetEnableUseBirthdayVoucherFactoriesAsync(string factory);
}

View File

@@ -0,0 +1,12 @@
using Kurisu.RemoteCall.Attributes;
namespace Dlhis.Basic.Api;
[RequestResultHandler]
[EnableRemoteClient(Name = "basic-service", BaseUrl = "${InternalRequest:BasicRequestUrl}")]
public interface IGainfoPermissionApi
{
[Auth]
[Get("/api/devicePermissions/userPermissionCodes")]
Task<List<Guid>> GetPermissionsDeviceCodesAsync(string userCode);
}

View File

@@ -0,0 +1,66 @@
using Dlhis.Basic.Api.ClientHandler;
using Dlhis.Basic.Api.ContentHandlers;
using Dlhis.Basic.Api.Response;
using Kurisu.RemoteCall.Attributes;
namespace Dlhis.Basic.Api;
[RequestResultHandler]
[EnableRemoteClient(Name = "longRun-service", BaseUrl = "${InternalRequest:BasicRequestUrl}", PolicyHandler = typeof(LongRunClientHandler))]
public interface ISyncApi
{
/// <summary>
/// 根据人事范围获取员工信息
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[Post("/api/sync/gainfo/werk")]
[RequestContentHandler(typeof(CodeContentHandler))]
Task SyncGainfoByWerkAsync(string code);
/// <summary>
/// 根据工号获取员工信息
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[Post("/api/sync/gainfo/user")]
[RequestContentHandler(typeof(CodeContentHandler))]
Task SyncGainfoByUserCodeAsync(string code);
/// <summary>
/// 获取组织架构数据
/// </summary>
/// <returns></returns>
[Get("/api/sync/orgs")]
Task<SapOrganizationResponse> SyncOrganizationsAsync();
/// <summary>
/// 获取职位数据
/// </summary>
/// <returns></returns>
[Get("/api/sync/positions")]
Task<SapPositionResponse> GetPositionsAsync();
/// <summary>
/// 差旅数据处理
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[Post("/api/sync/businessTrips")]
[RequestContentHandler(typeof(CodeContentHandler))]
Task HandlerBusinessTripsAsync(string code);
/// <summary>
/// 外包自动离职处理
/// </summary>
/// <returns></returns>
[Post("/api/gainfoOutsource/autoResign")]
Task OutsourceAutoResignAsync();
/// <summary>
/// 外部人员自动离职处理
/// </summary>
/// <returns></returns>
[Post("/api/appointments/autoResign")]
Task ExternalAutoResignAsync();
}

View File

@@ -0,0 +1,10 @@
namespace Dlhis.Basic.Api.Requests;
public class DingTalkMessageUrlRequest
{
public string UserCode { get; set; }
public string Title { get; set; }
public string Text { get; set; }
public string PicUrl { get; set; }
public string MessageUrl { get; set; }
}

View File

@@ -0,0 +1,14 @@
namespace Dlhis.Basic.Api.Requests;
public class JinkoSendWorkMessageRequest
{
/// <summary>
/// 发送内容
/// </summary>
public string Content { get; set; }
/// <summary>
/// 工号
/// </summary>
public List<string> WorkCodes { get; set; }
}

View File

@@ -0,0 +1,15 @@
using Newtonsoft.Json;
namespace Dlhis.Basic.Api.Response;
/// <summary>
/// sap机构信息
/// </summary>
public class SapOrganization
{
/// <summary>
/// 机构项
/// </summary>
[JsonProperty("item")]
public List<SapOrganizationItem> Items { get; set; }
}

View File

@@ -0,0 +1,97 @@
namespace Dlhis.Basic.Api.Response;
public class SapOrganizationItem
{
/// <summary>
/// 开始日期
/// </summary>
public string BEGDA { get; set; }
/// <summary>
/// 结束日期
/// </summary>
public string ENDDA { get; set; }
/// <summary>
/// 语言
/// </summary>
public string LANGU { get; set; }
/// <summary>
/// 部门id
/// </summary>
public string OBJID { get; set; }
/// <summary>
/// 部门名称
/// </summary>
public string STEXT { get; set; }
/// <summary>
/// 上级部门
/// </summary>
public string SOBID { get; set; }
/// <summary>
/// 公司
/// </summary>
public string ORGID01 { get; set; }
/// <summary>
/// 事业部
/// </summary>
public string ORGID02 { get; set; }
/// <summary>
/// 一级部门
/// </summary>
public string ORGID03 { get; set; }
/// <summary>
/// 二级部门
/// </summary>
public string ORGID04 { get; set; }
/// <summary>
/// 三级部门
/// </summary>
public string ORGID05 { get; set; }
/// <summary>
/// 四级部门
/// </summary>
public string ORGID06 { get; set; }
/// <summary>
/// 五级部门
/// </summary>
public string ORGID07 { get; set; }
/// <summary>
/// 六级部门
/// </summary>
public string ORGID08 { get; set; }
}
//public partial class SapOrganizationItem : IEquatable<SapOrganizationItem>
//{
// public bool Equals(SapOrganizationItem other)
// {
// if (other is null)
// return false;
// return this.BEGDA == other.BEGDA
// && this.ENDDA == other.ENDDA
// && this.LANGU == other.LANGU
// && this.OBJID == other.OBJID
// && this.STEXT == other.STEXT
// && this.SOBID == other.SOBID
// && this.ORGID01 == other.ORGID01
// && this.ORGID02 == other.ORGID02;
// }
// public override bool Equals(object obj) => Equals(obj as SapOrganizationItem);
// public override int GetHashCode() => (BEGDA, ENDDA, LANGU, OBJID, STEXT, SOBID, ORGID01, ORGID02).GetHashCode();
//}

View File

@@ -0,0 +1,9 @@
using Newtonsoft.Json;
namespace Dlhis.Basic.Api.Response;
public class SapOrganizationResponse
{
[JsonProperty("T_ORG")]
public SapOrganization Org { get; set; }
}

View File

@@ -0,0 +1,211 @@
namespace Dlhis.Jip.Api.Dto;
public class SapPersonItem
{
public string KOSTL { get; set; }
/// <summary>
/// 离职日期
/// </summary>
public DateTime? ZLZRQ { get; set; }
public string ZZ_SFZH { get; set; }
public string STELL { get; set; }
public string STELL_NM { get; set; }
public string ZZ_KLX { get; set; }
/// <summary>
///
/// </summary>
public string PERNR { get; set; }
/// <summary>
///
/// </summary>
public string ZWORKCODE { get; set; }
/// <summary>
///
/// </summary>
public string MASSN { get; set; }
/// <summary>
/// 数据变更
/// </summary>
public string MNTXT { get; set; }
/// <summary>
///
/// </summary>
public string MASSG { get; set; }
/// <summary>
/// 数据变更
/// </summary>
public string MGTXT { get; set; }
/// <summary>
///
/// </summary>
public string ZSTATUS { get; set; }
/// <summary>
///
/// </summary>
public string STAT2 { get; set; }
/// <summary>
///
/// </summary>
public string BEGDA { get; set; }
/// <summary>
///
/// </summary>
public string ENDDA { get; set; }
/// <summary>
///
/// </summary>
public string WERKS { get; set; }
/// <summary>
///
/// </summary>
public string PERSG { get; set; }
/// <summary>
///
/// </summary>
public string PERSK { get; set; }
/// <summary>
///
/// </summary>
public string BTRTL { get; set; }
/// <summary>
///
/// </summary>
public string ANSVH { get; set; }
/// <summary>
///
/// </summary>
public string MOABW { get; set; }
/// <summary>
///
/// </summary>
public string ORGEH { get; set; }
/// <summary>
///
/// </summary>
public string PLANS { get; set; }
/// <summary>
///
/// </summary>
public string ZZ_ZYSF { get; set; }
/// <summary>
///
/// </summary>
public string ZZ_AQJB { get; set; }
/// <summary>
///
/// </summary>
public string ZZ_ZD { get; set; }
/// <summary>
///
/// </summary>
public string ZZ_SJGH { get; set; }
/// <summary>
///
/// </summary>
public string ZZ_BGZT { get; set; }
/// <summary>
///
/// </summary>
public string Z_ZJ { get; set; }
/// <summary>
///
/// </summary>
public string ZZ_XSQY { get; set; }
/// <summary>
/// 上海
/// </summary>
public string ZZ_LOC { get; set; }
/// <summary>
///
/// </summary>
public string ZZ_COUN { get; set; }
/// <summary>
///
/// </summary>
public string ZZ_CITY { get; set; }
/// <summary>
///
/// </summary>
public string NACHN { get; set; }
/// <summary>
///
/// </summary>
public string VORNA { get; set; }
/// <summary>
///
/// </summary>
public string NAME { get; set; }
/// <summary>
///
/// </summary>
public string GESCH { get; set; }
/// <summary>
///
/// </summary>
public DateTime GBDAT { get; set; }
/// <summary>
///
/// </summary>
public string NATIO { get; set; }
/// <summary>
///
/// </summary>
public string ZZ_QFRQ { get; set; }
/// <summary>
///
/// </summary>
public string ZMOBILE { get; set; }
/// <summary>
///
/// </summary>
public string ZEMAIL { get; set; }
/// <summary>
///
/// </summary>
public string ZADZH { get; set; }
/// <summary>
///
/// </summary>
public DateTime ZRZRQ { get; set; }
/// <summary>
///
/// </summary>
public string DAT01 { get; set; }
/// <summary>
///
/// </summary>
public string ZCJRQ { get; set; }
/// <summary>
///
/// </summary>
public string ZZZRQ { get; set; }
/// <summary>
/// 本科
/// </summary>
public string ZXUELI { get; set; }
/// <summary>
///
/// </summary>
public string ZZ_ZPQD { get; set; }
/// <summary>
/// 国家
/// </summary>
public string ZZ_COUNNM { get; set; }
/// <summary>
/// 基地
/// </summary>
public string ZZ_GZDJDNM { get; set; }
/// <summary>
/// 厂区
/// </summary>
public string ZZ_GZDCQNM { get; set; }
}

View File

@@ -0,0 +1,10 @@
using Newtonsoft.Json;
namespace Dlhis.Basic.Api.Response;
public class SapPosition
{
[JsonProperty("item")]
public List<SapPositionItem> Items { get; set; }
}

View File

@@ -0,0 +1,40 @@
namespace Dlhis.Basic.Api.Response
{
public class SapPositionItem
{
/// <summary>
/// 开始日期
/// </summary>
public string BEGDA { get; set; }
/// <summary>
/// 结束日期
/// </summary>
public string ENDDA { get; set; }
/// <summary>
/// 语言代码
/// </summary>
public string LANGU { get; set; }
/// <summary>
/// 岗位编码
/// </summary>
public string ZJOBID { get; set; }
/// <summary>
/// 岗位名称
/// </summary>
public string ZJOBNAME { get; set; }
/// <summary>
///
/// </summary>
public string ZZWID { get; set; }
/// <summary>
/// 所属部门ID
/// </summary>
public string ZDEPID { get; set; }
}
}

View File

@@ -0,0 +1,10 @@
using Dlhis.Jip.Api.Dto;
using Newtonsoft.Json;
namespace Dlhis.Basic.Api.Response;
public class SapPositionResponse
{
[JsonProperty("T_POST")]
public SapPosition Position { get; set; }
}

View File

@@ -0,0 +1,70 @@
using Dlhis.Basic.Appointment.Request;
using Dlhis.Basic.Appointment.Response;
using Dlhis.Basic.Appointment.Services;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Appointment.Controllers;
/// <summary>
/// 预约区域
/// </summary>
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class AppointmentAreasController : ControllerBase
{
private readonly IAppointmentAreaService _appointmentAreaService;
public AppointmentAreasController(IAppointmentAreaService appointmentAreaService)
{
_appointmentAreaService = appointmentAreaService;
}
/// <summary>
/// 保存
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("save")]
public async Task SaveAsync(AppointmentAreaSaveRequest request)
{
await _appointmentAreaService.SaveAsync(request);
}
/// <summary>
/// 预约区域分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("page")]
public async Task<Pagination<AppointmentAreaPageResponse>> GetPageAsync([FromQuery] AppointmentAreaPageRequest request)
{
return await _appointmentAreaService.GetPageAsync(request);
}
/// <summary>
/// 分配设备
/// </summary>
/// <returns></returns>
[HttpPost("assign")]
[Transactional]
public async Task AssignAsync(AppointmentAreaAssignRequest request)
{
await _appointmentAreaService.AssignAsync(request);
}
/// <summary>
/// 获取当前分配
/// </summary>
/// <param name="customCode"></param>
/// <returns></returns>
[HttpGet("assignments")]
[Transactional]
public async Task<List<Guid>> GetAssignmentsAsync(string customCode)
{
return await _appointmentAreaService.GetAssignmentsAsync(customCode);
}
}

View File

@@ -0,0 +1,170 @@
using Dlhis.Basic.Appointment.Request;
using Dlhis.Basic.Appointment.Response;
using Dlhis.Basic.Appointment.Services;
using Dlhis.Entity.Visitor.Enums;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Appointment.Controllers;
/// <summary>
/// 预约
/// </summary>
[Authorize]
[ApiController]
[Route("api/[controller]")]
public class AppointmentsController : ControllerBase
{
private readonly IAppointmentService _appointmentService;
public AppointmentsController(IAppointmentService appointmentService)
{
_appointmentService = appointmentService;
}
/// <summary>
/// 预约申请分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("page")]
public async Task<Pagination<AppointmentPageResponse>> GetPageAsync([FromQuery] AppointmentPageRequest request)
{
return await _appointmentService.GetPageAsync(request);
}
/// <summary>
/// 获取预约明细
/// </summary>
/// <param name="no"></param>
/// <returns></returns>
[HttpGet("details")]
public async Task<List<AppointmentDetailResponse>> GetAppointmentDetailsByIdAsync(string no)
{
return await _appointmentService.GetAppointmentDetailsByIdAsync(no);
}
/// <summary>
/// 确认到达
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[AllowAnonymous]
[HttpPost("confirm")]
[Transactional]
[IgnoreTenant]
public async Task ConfirmAsync(AppointmentConfirmRequest request)
{
await _appointmentService.ConfirmAsync(request);
}
/// <summary>
/// 强制离场
/// </summary>
/// <param name="request"></param>
[HttpPost("focusleave")]
[Transactional]
public async Task FocusLeaveAsync(AppointmentFocusLeaveRequest request)
{
await _appointmentService.FocusLeaveAsync(request.Id, request.Reason);
}
/// <summary>
/// 人脸更新
/// </summary>
/// <param name="request"></param>
[AllowAnonymous]
[HttpPost("face/update")]
[Transactional]
[IgnoreTenant]
public async Task UpdateFaceAsync(AppointmentConfirmRequest request)
{
await _appointmentService.UpdateFaceAsync(request.Id, request.Base64Image);
}
/// <summary>
/// 根据身份证获取当天预约信息
/// </summary>
/// <param name="idNo"></param>
/// <param name="factory"></param>
/// <returns></returns>
[AllowAnonymous]
[HttpGet("today")]
public async Task<AppointmentDetailResponse> GetTodayByIdNoAsync(string idNo, string factory)
{
return await _appointmentService.GetTodayByIdNoAsync(idNo, factory);
}
/// <summary>
/// 门禁预约
/// </summary>
/// <param name="factory"></param>
/// <param name="search"></param>
/// <param name="status"></param>
/// <param name="start"></param>
/// <param name="end"></param>
/// <returns></returns>
[AllowAnonymous]
[HttpGet("door/list")]
public async Task<List<AppointmentDetailResponse>> GetRecordListAsync(string factory, string search, VisitorAppointmentDetailStatusEnumType? status, DateTime start, DateTime end)
{
return await _appointmentService.GetRecordListAsync(factory, search, status, start, end);
}
/// <summary>
/// 根据身份证获取预约信息分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[AllowAnonymous]
[HttpGet("idno/page")]
public async Task<Pagination<AppointmentDetailResponse>> GetRecordPageByIdNoAsync([FromQuery] AppointmentIdNoPageRequest request)
{
return await _appointmentService.GetRecordPageByIdNoAsync(request);
}
/// <summary>
/// 数据明细
/// </summary>
/// <param name="factory"></param>
/// <param name="start"></param>
/// <param name="end"></param>
/// <returns></returns>
[AllowAnonymous]
[HttpGet("summary")]
public async Task<AppointmentSummaryResponse> GetSummaryAsync(string factory, DateTime start, DateTime end)
{
end = start.Date.AddDays(1).AddMilliseconds(-1);
return await _appointmentService.GetSummaryAsync(factory, start, end);
}
/// <summary>
/// 自动离职处理
/// </summary>
[AllowAnonymous]
[HttpPost("autoResign")]
[IgnoreTenant]
public async Task AutoResignAsync()
{
await _appointmentService.AutoResignAsync();
}
[AllowAnonymous]
[HttpPost("recover")]
[IgnoreTenant]
public async Task RecoverAsync()
{
await _appointmentService.RecoverAsync();
}
[AllowAnonymous]
[IgnoreTenant]
[HttpGet("visitor-devices")]
public async Task<List<string>> GetVisitorDevicesAsync(long detailId)
{
return await _appointmentService.GetVisitorDevicesAsync(detailId);
}
}

View File

@@ -0,0 +1,31 @@
using System.ComponentModel.DataAnnotations;
namespace Dlhis.Basic.Appointment.Dto;
public class AppointmentReceiveItemDto
{
/// <summary>
/// 姓名
/// </summary>
[Required(ErrorMessage = "姓名必填")]
public string Name { get; set; }
/// <summary>
/// 手机号
/// </summary>
[StringLength(11, MinimumLength = 11)]
[Required(ErrorMessage = "手机号必填")]
public string Phone { get; set; }
/// <summary>
/// 身份证
/// </summary>
[StringLength(18, MinimumLength = 18)]
[Required(ErrorMessage = "身份证必填")]
public string IdNo { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
}

View File

@@ -0,0 +1,17 @@
using System.ComponentModel.DataAnnotations;
namespace Dlhis.Basic.Appointment.Request;
public class AppointmentAreaAssignRequest
{
/// <summary>
/// 预约区域编码
/// </summary>
[Required]
public string CustomCode { get; set; }
/// <summary>
/// 设备分组
/// </summary>
public IEnumerable<Guid> DeviceGroupCodes { get; set; }
}

View File

@@ -0,0 +1,14 @@
using System.ComponentModel.DataAnnotations;
using Dlhis.Entity.Visitor.Enums;
using Kurisu.AspNetCore.DataAccess.Dto;
namespace Dlhis.Basic.Appointment.Request;
public class AppointmentAreaPageRequest : PageDto
{
/// <summary>
/// 区域类型
/// </summary>
[EnumDataType(typeof(AppointmentAreaEnumType))]
public AppointmentAreaEnumType? Type { get; set; }
}

View File

@@ -0,0 +1,35 @@
using System.ComponentModel.DataAnnotations;
using Dlhis.Entity.Visitor.Enums;
namespace Dlhis.Basic.Appointment.Request;
public class AppointmentAreaSaveRequest
{
/// <summary>
/// 数据id
/// </summary>
public long? Id { get; set; }
/// <summary>
/// 区域 AppointmentAreaEnumType
/// </summary>
[EnumDataType(typeof(AppointmentAreaEnumType))]
public AppointmentAreaEnumType Type { get; set; }
/// <summary>
/// 编码
/// </summary>
[Required(ErrorMessage = "编码不能为空")]
public string CustomCode { get; set; }
/// <summary>
/// 名称
/// </summary>
[Required]
public string Name { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
}

View File

@@ -0,0 +1,17 @@
using System.ComponentModel.DataAnnotations;
namespace Dlhis.Basic.Appointment.Request;
public class AppointmentConfirmRequest
{
/// <summary>
/// 预约明细id
/// </summary>
public long Id { get; set; }
/// <summary>
/// base64 image
/// </summary>
[Required]
public string Base64Image { get; set; }
}

View File

@@ -0,0 +1,11 @@
using System.ComponentModel.DataAnnotations;
namespace Dlhis.Basic.Appointment.Request;
public class AppointmentFocusLeaveRequest
{
public long Id { get; set; }
[Required(ErrorMessage = "原因不可为空")]
public string Reason { get; set; }
}

View File

@@ -0,0 +1,14 @@
using System.ComponentModel.DataAnnotations;
using Kurisu.AspNetCore.DataAccess.Dto;
namespace Dlhis.Basic.Appointment.Request;
public class AppointmentIdNoPageRequest : PageDto
{
/// <summary>
/// 身份证
/// </summary>
[StringLength(18, MinimumLength = 18, ErrorMessage = "身份证错误")]
[Required(ErrorMessage = "身份证不可为空")]
public string IdNo { get; set; }
}

View File

@@ -0,0 +1,21 @@
using System.ComponentModel.DataAnnotations;
using Kurisu.AspNetCore.CustomClass;
using Kurisu.AspNetCore.DataAccess.Dto;
namespace Dlhis.Basic.Appointment.Request;
public class AppointmentPageRequest : PageDto, IValidatableObject
{
public DateTimePeriod SearchDateTimePeriod { get; set; }
/// <inheritdoc />
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (SearchDateTimePeriod.HasValue())
{
SearchDateTimePeriod.End = SearchDateTimePeriod.End!.Value.AddDays(1).AddSeconds(-1);
}
yield break;
}
}

View File

@@ -0,0 +1,83 @@
using System.ComponentModel.DataAnnotations;
using Dlhis.Basic.Appointment.Dto;
namespace Dlhis.Basic.Appointment.Request;
public class AppointmentReceiveRequest : IValidatableObject
{
/// <summary>
/// 流水号
/// </summary>
[Required(ErrorMessage = "流水号必填")]
public string FlowId { get; set; }
/// <summary>
/// 标题
/// </summary>
[Required(ErrorMessage = "标题必填")]
public string Title { get; set; }
/// <summary>
/// 对接人工号
/// </summary>
[Required(ErrorMessage = "对接人工号必填")]
public string Code { get; set; }
/// <summary>
/// 对接人姓名
/// </summary>
[Required(ErrorMessage = "对接人姓名必填")]
public string Name { get; set; }
/// <summary>
/// 申请时间
/// </summary>
[Required(ErrorMessage = "申请时间必填")]
public DateTime ApplyTime { get; set; }
/// <summary>
/// 预约区域
/// </summary>
[Required(ErrorMessage = "申请预约区域必填")]
public string ApplyArea { get; set; }
/// <summary>
/// 来源公司
/// </summary>
[Required(ErrorMessage = "来源公司")]
public string Company { get; set; }
/// <summary>
/// 来访时间
/// </summary>
public DateTime Start { get; set; }
/// <summary>
/// 离开时间
/// </summary>
public DateTime End { get; set; }
/// <summary>
/// 描述
/// </summary>
public string Description { get; set; }
/// <summary>
/// 厂区
/// </summary>
public string Factory { get; set; }
/// <summary>
/// 明细
/// </summary>
[MinLength(1, ErrorMessage = "明细必填")]
public List<AppointmentReceiveItemDto> Items { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Start >= End)
{
yield return new ValidationResult("来访时间不能大于等于离开时间", new[] { nameof(Start), nameof(End) });
}
}
}

View File

@@ -0,0 +1,34 @@
using Dlhis.Entity.Visitor.Enums;
using Kurisu.AspNetCore.Utils.Extensions;
namespace Dlhis.Basic.Appointment.Response;
public class AppointmentAreaPageResponse
{
public long Id { get; set; }
/// <summary>
/// 区域类型
/// </summary>
public AppointmentAreaEnumType Type { get; set; }
/// <summary>
/// 区域类型
/// </summary>
public string TypeDesc => Type.GetDescription();
/// <summary>
/// 自定义编码
/// </summary>
public string CustomCode { get; set; }
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
}

View File

@@ -0,0 +1,110 @@
using Dlhis.Basic.Utils;
using Dlhis.Entity.Visitor.Enums;
using Newtonsoft.Json;
namespace Dlhis.Basic.Appointment.Response;
public class AppointmentDetailResponse
{
public long Id { get; set; }
public AppointmentPageResponse Mst { get; set; }
/// <summary>
/// 流水号
/// </summary>
public string No { get; set; }
/// <summary>
/// no
/// </summary>
public string UserNo { get; set; }
/// <summary>
/// 证件类型
/// </summary>
public string IdType { get; set; }
/// <summary>
/// 证件号
/// </summary>
[JsonConverter(typeof(ObfuscateProviderOnlyAdminJsonConverter), 0)]
public string IdNo { get; set; }
/// <summary>
/// 访客名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 手机号
/// </summary>
[JsonConverter(typeof(ObfuscateProviderOnlyAdminJsonConverter), 0)]
public string Phone { get; set; }
/// <summary>
/// 车牌
/// </summary>
public string LicensePlate { get; set; }
/// <summary>
/// 进入门岗
/// </summary>
public bool IsEnterDoorArea { get; set; }
/// <summary>
/// 预约门禁区域
/// </summary>
public string ApplyDoorArea { get; set; }
/// <summary>
/// 访客开始
/// </summary>
public DateTime? DoorStart { get; set; }
/// <summary>
/// 访问结束
/// </summary>
public DateTime? DoorEnd { get; set; }
/// <summary>
/// 是否进入车间
/// </summary>
public bool IsEnterWorkplace { get; set; }
/// <summary>
/// 申请车间区域
/// </summary>
public List<string> ApplyWorkplaceAreas { get; set; }
/// <summary>
/// 车间访问开始
/// </summary>
public DateTime? WorkplaceStart { get; set; }
/// <summary>
/// 车间访问结束
/// </summary>
public DateTime? WorkplaceEnd { get; set; }
/// <summary>
/// 社保照片url
/// </summary>
public string ImageUrl { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
/// <summary>
/// 门禁状态
/// </summary>
public VisitorAppointmentDetailStatusEnumType DoorStatus { get; set; }
/// <summary>
/// 车间状态
/// </summary>
public VisitorAppointmentDetailStatusEnumType WorkplaceStatus { get; set; }
}

View File

@@ -0,0 +1,46 @@
namespace Dlhis.Basic.Appointment.Response;
public class AppointmentPageResponse
{
public string No { get; set; }
/// <summary>
/// 标题
/// </summary>
public string Title { get; set; }
/// <summary>
/// 对接人工号
/// </summary>
public string Code { get; set; }
/// <summary>
/// 对接人姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 来访人来源/公司
/// </summary>
public string Source { get; set; }
/// <summary>
/// 申请时间
/// </summary>
public DateTime Date { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
/// <summary>
/// 预约厂区
/// </summary>
public string Factory { get; set; }
/// <summary>
/// 申请事由
/// </summary>
public string Reason { get; set; }
}

View File

@@ -0,0 +1,11 @@
namespace Dlhis.Basic.Appointment.Response;
public class AppointmentSummaryResponse
{
public int Total { get; set; }
public int In { get; set; }
public int NotIn { get; set; }
public int Leave { get; set; }
public int NotLeave { get; set; }
}

View File

@@ -0,0 +1,36 @@
using Dlhis.Basic.Appointment.Request;
using Dlhis.Basic.Appointment.Response;
using Kurisu.AspNetCore.DataAccess.Dto;
namespace Dlhis.Basic.Appointment.Services;
public interface IAppointmentAreaService : IScopeDependency
{
/// <summary>
/// 区域分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
Task<Pagination<AppointmentAreaPageResponse>> GetPageAsync(AppointmentAreaPageRequest request);
/// <summary>
/// 保存区域
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
Task SaveAsync(AppointmentAreaSaveRequest request);
/// <summary>
/// 分配设备组到区域
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
Task AssignAsync(AppointmentAreaAssignRequest request);
/// <summary>
/// 获取分配
/// </summary>
/// <param name="customCode"></param>
/// <returns></returns>
Task<List<Guid>> GetAssignmentsAsync(string customCode);
}

View File

@@ -0,0 +1,79 @@
using Dlhis.Basic.Appointment.Request;
using Dlhis.Basic.Appointment.Response;
using Dlhis.Entity.Visitor.Enums;
using Kurisu.AspNetCore.DataAccess.Dto;
namespace Dlhis.Basic.Appointment.Services;
public interface IAppointmentService : IScopeDependency
{
/// <summary>
/// 预约分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
Task<Pagination<AppointmentPageResponse>> GetPageAsync(AppointmentPageRequest request);
/// <summary>
/// 查看明细
/// </summary>
/// <param name="no"></param>
/// <returns></returns>
Task<List<AppointmentDetailResponse>> GetAppointmentDetailsByIdAsync(string no);
/// <summary>
/// 确认到达
/// </summary>
/// <returns></returns>
Task ConfirmAsync(AppointmentConfirmRequest request);
/// <summary>
/// 根据身份证获取最新访客预约
/// </summary>
/// <param name="idNo"></param>
/// <param name="factory"></param>
/// <returns></returns>
Task<AppointmentDetailResponse> GetTodayByIdNoAsync(string idNo, string factory);
/// <summary>
/// 强制离开
/// </summary>
/// <param name="id"></param>
/// <param name="reason"></param>
/// <returns></returns>
Task FocusLeaveAsync(long id, string reason);
/// <summary>
/// 获取记录列表
/// </summary>
/// <param name="factory"></param>
/// <param name="search"></param>
/// <param name="status"></param>
/// <param name="start"></param>
/// <param name="end"></param>
/// <returns></returns>
Task<List<AppointmentDetailResponse>> GetRecordListAsync(string factory, string search, VisitorAppointmentDetailStatusEnumType? status, DateTime start, DateTime end);
Task<Pagination<AppointmentDetailResponse>> GetRecordPageByIdNoAsync(AppointmentIdNoPageRequest request);
Task<AppointmentSummaryResponse> GetSummaryAsync(string factory, DateTime start, DateTime end);
/// <summary>
/// 更新人脸
/// </summary>
/// <param name="detailId"></param>
/// <param name="base64"></param>
/// <returns></returns>
Task UpdateFaceAsync(long detailId, string base64);
/// <summary>
/// 自动离职
/// </summary>
/// <returns></returns>
Task AutoResignAsync();
Task<List<string>> GetVisitorDevicesAsync(long detailId);
Task RecoverAsync();
}

View File

@@ -0,0 +1,206 @@
using Dlhis.Basic.Appointment.Request;
using Dlhis.Basic.Appointment.Response;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Device.Entities;
using Dlhis.Entity.Device.Enums;
using Dlhis.Entity.Visitor.Entity;
using Dlhis.Entity.Visitor.Enums;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
using Kurisu.AspNetCore.Utils.Extensions;
using Mapster;
namespace Dlhis.Basic.Appointment.Services.Implements;
public class AppointmentAreaService : IAppointmentAreaService
{
private readonly IDbContext _dbContext;
public AppointmentAreaService(IDbContext dbContext)
{
_dbContext = dbContext;
}
public async Task SaveAsync(AppointmentAreaSaveRequest request)
{
if (!request.Id.HasValue)
{
var exists = await _dbContext.Queryable<AppointmentAreaEntity>().Where(x => x.CustomCode == request.CustomCode).AnyAsync();
exists.ThrowIfTrue("编码已存在");
var entity = request.Adapt<AppointmentAreaEntity>();
entity.CustomCode = request.CustomCode;
entity.Type = request.Type;
await _dbContext.InsertAsync(entity);
}
else
{
var entity = await _dbContext.Queryable<AppointmentAreaEntity>().Where(x => x.Id == request.Id).SingleAsync();
entity.ThrowIfNull("预约区域不存在");
request.Adapt(entity);
await _dbContext.UpdateAsync(entity);
}
}
public async Task<Pagination<AppointmentAreaPageResponse>> GetPageAsync(AppointmentAreaPageRequest request)
{
return await _dbContext.Queryable<AppointmentAreaEntity>()
.WhereIF(request.Type.HasValue, x => x.Type == request.Type)
.WhereIF(request.Search.IsPresent(), x => x.CustomCode == request.Search || x.Name.Contains(request.Search))
.Select<AppointmentAreaPageResponse>()
.ToPageListAsync(request);
}
public async Task AssignAsync(AppointmentAreaAssignRequest request)
{
(await _dbContext.Queryable<AppointmentAreaEntity>()
.Where(x => x.CustomCode == request.CustomCode)
.AnyAsync()
).ThrowIfFalse("区域不存在");
(await _dbContext.Queryable<DeviceGroupEntity>()
.Where(x => request.DeviceGroupCodes.Contains(x.Code))
.Where(x => x.AsAppointment == false)
.AnyAsync())
.ThrowIfTrue("存在非可设置访客预约的分组");
var userBeforePermissions = await GetMyPermissionsAsync(request.CustomCode);
var userNos = userBeforePermissions.Select(x => x.Key).ToList();
//删除原来的配置
await _dbContext.Client.Deleteable<AppointmentAreaAssignmentEntity>()
.Where(x => x.CustomCode == request.CustomCode)
.ExecuteCommandAsync();
//添加当前区域的设置
var data = request.DeviceGroupCodes.Select(x => new AppointmentAreaAssignmentEntity
{
CustomCode = request.CustomCode,
DeviceGroupCode = x
}).ToList();
await _dbContext.InsertAsync(data);
var userCurrentPermissions = await GetMyPermissionsAsync(request.CustomCode);
var allDeviceCodes = userCurrentPermissions.SelectMany(x => x.Value);
var devices = await _dbContext.Queryable<DeviceEntity>().Where(x => allDeviceCodes.Contains(x.Code)).ToListAsync();
var tasks = new List<DeviceTaskEntity>();
foreach (var userNo in userNos)
{
var before = userBeforePermissions[userNo];
var current = userCurrentPermissions[userNo];
//被删除
var deletedItems = before.Where(x => !current.Contains(x)).ToList();
//新增
var addItems = current.Where(x => !before.Contains(x)).ToList();
if (!deletedItems.Any() && !addItems.Any())
{
continue;
}
tasks.AddRange(deletedItems.Select(x => new DeviceTaskEntity
{
Type = DeviceTaskEnumType.Delete,
DeviceType = DeviceTypeEnumType.Door,
UserNo = userNo,
DeviceUniqueNo = devices.First(item => item.Code == x).UniqueNo,
Status = DeviceTaskStatusEnumType.Wait,
Version = 0,
Source = "预约区域和设备组关系变更生成",
Priority = 99
}));
tasks.AddRange(addItems.Select(x => new DeviceTaskEntity
{
Type = DeviceTaskEnumType.Add,
DeviceType = DeviceTypeEnumType.Door,
UserNo = userNo,
DeviceUniqueNo = devices.First(item => item.Code == x).UniqueNo,
Status = DeviceTaskStatusEnumType.Wait,
Version = 0,
Source = "预约区域和设备组关系变更生成",
Priority = 99
}));
}
await _dbContext.InsertAsync(tasks);
}
/// <inheritdoc />
public async Task<List<Guid>> GetAssignmentsAsync(string customCode)
{
return await _dbContext.Queryable<AppointmentAreaAssignmentEntity>()
.LeftJoin<DeviceGroupEntity>((x, dg) => x.DeviceGroupCode == dg.Code)
.Where((x, dg) => x.CustomCode == customCode && dg.AsAppointment)
.Select(x => x.DeviceGroupCode)
.ToListAsync();
}
//********************************************************* help methods ***************************************************************
private async Task<Dictionary<string, List<Guid>>> GetMyPermissionsAsync(string areaCode)
{
//获取已经到达的数据
var arrivedInfos = await _dbContext.Queryable<VisitorAppointmentDetailEntity>()
.Where(x => x.DoorStatus == VisitorAppointmentDetailStatusEnumType.Arrived || x.WorkplaceStatus == VisitorAppointmentDetailStatusEnumType.Arrived)
.Select(x => new
{
x.UserNo,
x.DoorStatus,
x.WorkplaceStatus,
x.IsEnterDoorArea,
x.ApplyDoorArea,
x.IsEnterWorkplace,
x.ApplyWorkplaceAreas
})
.ToListAsync();
var userAreaCodes = arrivedInfos.GroupBy(x => x.UserNo).ToDictionary(p => p.Key, ls =>
{
return ls.SelectMany(x =>
{
var list = new List<string>();
if (x.DoorStatus == VisitorAppointmentDetailStatusEnumType.Arrived)
{
list.Add(x.ApplyDoorArea);
}
if (x.WorkplaceStatus == VisitorAppointmentDetailStatusEnumType.Arrived)
{
list.AddRange(x.ApplyWorkplaceAreas);
}
return list;
});
});
userAreaCodes = userAreaCodes.Where(x => x.Value.Contains(areaCode)).ToDictionary(x => x.Key, x => x.Value);
var userBeforePermissions = new Dictionary<string, List<Guid>>(userAreaCodes.Count);
foreach ((string currentUserNo, IEnumerable<string> currentUseAreaCode) in userAreaCodes)
{
var deviceGroupCodes = await _dbContext.Queryable<AppointmentAreaAssignmentEntity>()
.Where(x => currentUseAreaCode.Contains(x.CustomCode))
.Select(x => x.DeviceGroupCode)
.ToListAsync();
var deviceCodes = await _dbContext.Queryable<DeviceGroupRelationshipEntity>()
.Where(x => deviceGroupCodes.Contains(x.GroupCode))
.Select(x => x.DeviceCode)
.Distinct()
.ToListAsync();
userBeforePermissions.Add(currentUserNo, deviceCodes);
}
return userBeforePermissions;
}
}

View File

@@ -0,0 +1,606 @@
using System.Linq.Expressions;
using Dlhis.Basic.Appointment.Request;
using Dlhis.Basic.Appointment.Response;
using Dlhis.Basic.Common.Message.Requests;
using Dlhis.Basic.Common.Message.Services;
using Dlhis.Basic.Organization.Request;
using Dlhis.Basic.Organization.Response;
using Dlhis.Basic.Organization.Services;
using Dlhis.Dh.Api;
using Dlhis.Dh.Api.Requests;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Basic.Enums;
using Dlhis.Entity.Device.Entities;
using Dlhis.Entity.Device.Enums;
using Dlhis.Entity.Visitor.Entity;
using Dlhis.Entity.Visitor.Enums;
using Kurisu.AspNetCore.Authentication.Abstractions;
using Kurisu.AspNetCore.CustomClass;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
using Kurisu.AspNetCore.Utils.Extensions;
using Mapster;
using Microsoft.AspNetCore.DataProtection;
using SqlSugar;
namespace Dlhis.Basic.Appointment.Services.Implements;
public class AppointmentService : IAppointmentService
{
private readonly IDbContext _dbContext;
private readonly IDataProtectionProvider _dataProtectionProvider;
private readonly ICurrentUser _currentUser;
private readonly IDhApi _dhApi;
private readonly IJinkoApiService _jinkoApiService;
private readonly IFactorySettingService _factorySettingService;
private readonly ILogger<AppointmentService> _logger;
private readonly IGainfoFaceService _gainfoFaceService;
private readonly IServiceProvider _serviceProvider;
public AppointmentService(IDbContext dbContext,
IDataProtectionProvider dataProtectionProvider,
ICurrentUser currentUser,
IDhApi dhApi,
IJinkoApiService jinkoApiService,
IFactorySettingService factorySettingService,
IGainfoFaceService gainfoFaceService,
IServiceProvider serviceProvider,
ILogger<AppointmentService> logger)
{
_dbContext = dbContext;
_dataProtectionProvider = dataProtectionProvider;
_currentUser = currentUser;
_dhApi = dhApi;
_jinkoApiService = jinkoApiService;
_factorySettingService = factorySettingService;
_logger = logger;
_gainfoFaceService = gainfoFaceService;
_serviceProvider = serviceProvider;
}
public async Task<Pagination<AppointmentPageResponse>> GetPageAsync(AppointmentPageRequest request)
{
var factory = _currentUser.GetStringTenantId();
return await _dbContext.Queryable<VisitorAppointmentEntity>()
.WhereIF(request.SearchDateTimePeriod.HasValue(),
x => x.Date >= request.SearchDateTimePeriod.Start && x.Date <= request.SearchDateTimePeriod.End)
.WhereIF(request.Search.IsPresent(), x => x.Code == request.Search ||
SqlFunc.Subqueryable<VisitorAppointmentDetailEntity>()
.Where(p => p.No == x.No)
.Where(p => p.IdNo == request.Search || p.Name == request.Search).Any()
)
.Where(x => x.Factory == factory)
.Select<AppointmentPageResponse>()
.ToPageListAsync(request);
}
public async Task<List<AppointmentDetailResponse>> GetAppointmentDetailsByIdAsync(string no)
{
return await _dbContext.Queryable<VisitorAppointmentDetailEntity>()
.Where(x => x.No == no)
.Select(x => new AppointmentDetailResponse
{
Id = x.Id,
No = x.No,
UserNo = x.UserNo,
IdType = x.IdType,
IdNo = x.IdNo,
Name = x.Name,
Phone = x.Phone,
LicensePlate = x.LicensePlate,
IsEnterDoorArea = x.IsEnterDoorArea,
ApplyDoorArea = SqlFunc.Subqueryable<AppointmentAreaEntity>().Where(p => p.CustomCode == x.ApplyDoorArea).Select(p => p.Name),
DoorStart = x.DoorStart,
DoorEnd = x.DoorEnd,
IsEnterWorkplace = x.IsEnterWorkplace,
ApplyWorkplaceAreas = SqlFunc.Subqueryable<AppointmentAreaEntity>().Where(p => x.ApplyWorkplaceAreas.ToString().Contains(p.CustomCode)).ToList(p => p.Name),
WorkplaceStart = x.WorkplaceStart,
WorkplaceEnd = x.WorkplaceEnd,
ImageUrl = x.ImageUrl,
Remark = x.Remark,
DoorStatus = x.DoorStatus,
WorkplaceStatus = x.WorkplaceStatus,
})
.ToListAsync();
}
public async Task ConfirmAsync(AppointmentConfirmRequest request)
{
var detail = await _dbContext.Queryable<VisitorAppointmentDetailEntity>().Where(x => x.Id == request.Id).SingleAsync();
detail.ThrowIfNull("预约信息不存在");
//提前传
await UploadFaceToDhAsync(detail.IdNo, request.Base64Image);
if (detail.DoorStatus == VisitorAppointmentDetailStatusEnumType.Wait)
{
detail.DoorStatus = VisitorAppointmentDetailStatusEnumType.Arrived;
}
else
{
true.ThrowIfTrue($"数据有误:{detail.DoorStatus.GetDescription()}");
}
detail.ArrivedTime = DateTime.Now;
await _dbContext.UpdateAsync(detail);
await _gainfoFaceService.UploadExternalFaceAsync(new GainfoUploadFaceRequest
{
UserNo = detail.IdNo,
Face = request.Base64Image
});
await GenerateDeviceTasksAsync(detail, false, DeviceTaskEnumType.Add, "访客门岗认证生成");
}
public async Task<AppointmentDetailResponse> GetTodayByIdNoAsync(string idNo, string factory)
{
var protector = _dataProtectionProvider.CreateProtector("gainfo:external:idno");
try
{
idNo = protector.Unprotect(idNo);
}
catch (Exception)
{
//ignore
}
var now = DateTime.Now;
return await _dbContext.Queryable<VisitorAppointmentDetailEntity>()
.LeftJoin<GainfoEntity>((x, ga) => ga.IdNo == x.IdNo)
.Where((x, ga) => ga.IdNo == idNo)
.Where(x => x.IsEnterDoorArea && now >= x.DoorStart && now <= x.DoorEnd && x.DoorStatus == VisitorAppointmentDetailStatusEnumType.Wait)
.Where(x => SqlFunc.Subqueryable<VisitorAppointmentEntity>().Where(p => p.No == x.No).Where(p => p.Factory == factory).Any())
.Select(x => new AppointmentDetailResponse
{
No = x.No,
Mst = SqlFunc.Subqueryable<VisitorAppointmentEntity>()
.LeftJoin<GainfoEntity>((p, ga) => p.Code == ga.Code)
.Where((p, ga) => p.No == x.No)
.First((p, ga) => new AppointmentPageResponse
{
No = p.No,
Title = p.Title,
Code = p.Code,
Name = ga.Name,
Source = p.Source,
Date = p.Date,
Remark = p.Remark,
Factory = p.Factory,
Reason = p.Reason
}, false)
}, true)
.FirstAsync();
}
public async Task FocusLeaveAsync(long id, string reason)
{
// 根据访客预约详情ID获取记录,若不存在则抛出异常
var detail = await _dbContext.Queryable<VisitorAppointmentDetailEntity>().Where(x => x.Id == id).SingleAsync();
detail.ThrowIfNull("数据不存在");
// 如果已进入门区且门区状态为“已到达”,则将门区状态更新为“强制离场”
if (detail.IsEnterDoorArea && detail.DoorStatus == VisitorAppointmentDetailStatusEnumType.Arrived)
detail.DoorStatus = VisitorAppointmentDetailStatusEnumType.FocusLeave;
// 如果已进入门区且门区状态为“待到达”,则将门区状态更新为“作废”
if (detail.IsEnterDoorArea && detail.DoorStatus == VisitorAppointmentDetailStatusEnumType.Wait)
detail.DoorStatus = VisitorAppointmentDetailStatusEnumType.Obsolete;
// 如果已进入工作区且工作区状态为“已到达”,则将工作区状态更新为“强制离场”
if (detail.IsEnterWorkplace && detail.WorkplaceStatus == VisitorAppointmentDetailStatusEnumType.Arrived)
detail.WorkplaceStatus = VisitorAppointmentDetailStatusEnumType.FocusLeave;
// 如果已进入工作区且工作区状态为“待到达”,则将工作区状态更新为“作废”
if (detail.IsEnterWorkplace && detail.WorkplaceStatus == VisitorAppointmentDetailStatusEnumType.Wait)
detail.WorkplaceStatus = VisitorAppointmentDetailStatusEnumType.Obsolete;
// 记录强制离场时间和原因
detail.FocusLeaveDateTime = DateTime.Now;
detail.Remark += "强制离场:" + reason;
// 生成设备任务并更新数据库
await GenerateDeviceTasksAsync(detail, true, DeviceTaskEnumType.Delete, $"强制离场:{reason}");
await _dbContext.UpdateAsync(detail);
try
{
var appointment = await _dbContext.Queryable<VisitorAppointmentEntity>().Where(x => x.No == detail.No).SingleAsync();
await _jinkoApiService.SendWorkMessageAsync(new DingTalkWorkMessageRequest
{
WorkCodes = new List<string> { appointment.Code },
Content = $"您的访客预约《{appointment.Title}》中的访客{detail.Name}已被强制离场,原因:{reason}。"
});
}
catch (Exception ex)
{
_logger.LogError(ex, "发送访客离场通知失败:{msg}", ex.Message);
}
}
public async Task<Pagination<AppointmentDetailResponse>> GetRecordPageByIdNoAsync(AppointmentIdNoPageRequest request)
{
var protector = _dataProtectionProvider.CreateProtector("gainfo:external:idno");
try
{
request.IdNo = protector.Unprotect(request.IdNo);
}
catch (Exception)
{
//ignore
}
var page = await _dbContext.Queryable<VisitorAppointmentDetailEntity>()
.LeftJoin<GainfoEntity>((x, ga) => x.UserNo == ga.No)
.Where((x, ga) => ga.IdNo == request.IdNo)
.OrderBy(x => x.CreateTime)
.Select<AppointmentDetailResponse>()
.ToPageListAsync(request);
return page;
}
public async Task<List<AppointmentDetailResponse>> GetRecordListAsync(string factory, string search, VisitorAppointmentDetailStatusEnumType? status, DateTime start, DateTime end)
{
var now = DateTime.Now;
var currentDateTime = start.Date.AddHours(now.Hour).AddMinutes(now.Minute);
return await _dbContext.Queryable<VisitorAppointmentDetailEntity>()
.LeftJoin<GainfoEntity>((x, ga) => ga.IdNo == x.IdNo)
.Where(x => SqlFunc.Subqueryable<VisitorAppointmentEntity>()
.Where(p => p.No == x.No)
.Where(p => p.Factory == factory).Any()
)
.Where(x => x.IsEnterDoorArea)
.WhereIF(status.HasValue, x => x.DoorStatus == status)
.WhereIF(status.HasValue && status == VisitorAppointmentDetailStatusEnumType.Wait, x => currentDateTime >= x.DoorStart && currentDateTime <= x.DoorEnd)
.WhereIF(status.HasValue && status == VisitorAppointmentDetailStatusEnumType.Arrived, x => currentDateTime >= x.DoorStart && currentDateTime <= x.DoorEnd)
.WhereIF(!status.HasValue, x => x.DoorStart >= start && x.DoorEnd <= end)
.WhereIF(search.IsPresent(), x => x.Name.Contains(search) || x.No == search || x.IdNo == search)
.Select(x => new AppointmentDetailResponse
{
Id = x.Id,
No = x.No,
Mst = SqlFunc.Subqueryable<VisitorAppointmentEntity>()
.LeftJoin<GainfoEntity>((p, ga) => p.Code == ga.Code)
.Where((p, ga) => p.No == x.No)
.First((p, ga) => new AppointmentPageResponse
{
No = p.No,
Title = p.Title,
Code = p.Code,
Name = ga.Name,
Source = p.Source,
Date = p.Date,
Remark = p.Remark,
Factory = p.Factory,
Reason = p.Reason
}, false)
}, true)
.ToListAsync();
}
public async Task<AppointmentSummaryResponse> GetSummaryAsync(string factory, DateTime start, DateTime end)
{
start = start.Date;
var total = await _dbContext.Queryable<VisitorAppointmentDetailEntity>()
.Where(x => x.IsEnterDoorArea && x.DoorStart >= start && x.DoorStart <= end)
.Where(x => SqlFunc.Subqueryable<VisitorAppointmentEntity>().Where(p => p.No == x.No).Where(p => p.Factory == factory).Any())
.CountAsync();
var @in = await _dbContext.Queryable<VisitorAppointmentDetailEntity>()
.Where(x => x.IsEnterDoorArea && x.ArrivedTime >= start && x.ArrivedTime <= end && x.DoorStatus == VisitorAppointmentDetailStatusEnumType.Arrived)
.Where(x => SqlFunc.Subqueryable<VisitorAppointmentEntity>().Where(p => p.No == x.No).Where(p => p.Factory == factory).Any())
.CountAsync();
var notIn = await _dbContext.Queryable<VisitorAppointmentDetailEntity>()
.Where(x => x.IsEnterDoorArea && x.DoorStart >= start && x.DoorStart <= end)
.Where(x => x.IsEnterDoorArea && x.DoorStatus == VisitorAppointmentDetailStatusEnumType.Wait)
.Where(x => SqlFunc.Subqueryable<VisitorAppointmentEntity>().Where(p => p.No == x.No).Where(p => p.Factory == factory).Any())
.CountAsync();
var leave = await _dbContext.Queryable<VisitorAppointmentDetailEntity>()
.Where(x => x.IsEnterDoorArea && x.DoorEnd >= start && x.DoorEnd <= end)
.Where(x => x.IsEnterDoorArea && (x.DoorStatus == VisitorAppointmentDetailStatusEnumType.Leave || x.DoorStatus == VisitorAppointmentDetailStatusEnumType.FocusLeave))
.Where(x => SqlFunc.Subqueryable<VisitorAppointmentEntity>().Where(p => p.No == x.No).Where(p => p.Factory == factory).Any())
.CountAsync();
var notLeave = await _dbContext.Queryable<VisitorAppointmentDetailEntity>()
.Where(x => x.IsEnterDoorArea && x.DoorEnd >= start && x.DoorEnd <= end && x.DoorStatus == VisitorAppointmentDetailStatusEnumType.Arrived)
.Where(x => SqlFunc.Subqueryable<VisitorAppointmentEntity>().Where(p => p.No == x.No).Where(p => p.Factory == factory).Any())
.CountAsync();
return new AppointmentSummaryResponse
{
Total = total,
In = @in,
NotIn = notIn,
Leave = leave,
NotLeave = notLeave
};
}
public async Task UpdateFaceAsync(long detailId, string base64)
{
var detail = await _dbContext.Queryable<VisitorAppointmentDetailEntity>().Where(x => x.Id == detailId).SingleAsync();
detail.ThrowIfNull("数据不存在");
await UploadFaceToDhAsync(detail.IdNo, base64);
await _gainfoFaceService.UploadExternalFaceAsync(new GainfoUploadFaceRequest
{
UserNo = detail.IdNo,
Face = base64
});
await GenerateDeviceTasksAsync(detail, true, DeviceTaskEnumType.Update, "访客手动上传照片");
}
public async Task RecoverAsync()
{
var day = new DateTime(2025, 12, 19);
var gainfoLeaves = await _dbContext.Queryable<GainfoLeaveEntity>()
.Where(x => x.Type == GainfoUserTypeEnumType.External)
.Where(x => SqlFunc.DateIsSame(x.ResignationDate, day))
.Where(x => SqlFunc.Subqueryable<GainfoEntity>().Where(p => p.No == x.No).NotAny())
.ToListAsync();
foreach (var gainfoLeave in gainfoLeaves)
{
await _dbContext.Client.Ado.BeginTranAsync();
try
{
var gainfo = gainfoLeave.Adapt<GainfoEntity>();
gainfo.Id = gainfo.IdentityUserId;
await _dbContext.InsertAsync(gainfo);
await _dbContext.DeleteReallyAsync(gainfoLeave);
var detail = await _dbContext.Queryable<VisitorAppointmentDetailEntity>().Where(x => x.UserNo == gainfo.No).OrderByDescending(x => x.Id).FirstAsync();
detail.ThrowIfNull("数据不存在");
if (detail.IsEnterDoorArea)
{
detail.DoorStatus = VisitorAppointmentDetailStatusEnumType.Arrived;
}
if (detail.IsEnterWorkplace)
{
detail.WorkplaceStatus = VisitorAppointmentDetailStatusEnumType.Arrived;
}
await _dbContext.UpdateAsync(detail);
await GenerateDeviceTasksAsync(detail, true, DeviceTaskEnumType.Update, "数据恢复");
await _dbContext.Client.Ado.CommitTranAsync();
}
catch (Exception ex)
{
_logger.LogError(ex, "恢复外部人员失败:{userNo}", gainfoLeave.No);
await _dbContext.Client.Ado.RollbackTranAsync();
}
}
}
public async Task<List<string>> GetVisitorDevicesAsync(long detailId)
{
var detail = await _dbContext.Queryable<VisitorAppointmentDetailEntity>().Where(x => x.Id == detailId).SingleAsync();
detail.ThrowIfNull("数据不存在");
var areaCodes = GetValidAreaCodes(detail, true).ToList();
if (areaCodes.IsEmpty()) return new List<string>();
var existsAreaCodes = await _dbContext.Queryable<AppointmentAreaEntity>().Where(x => areaCodes.Contains(x.CustomCode)).Select(x => x.CustomCode).ToListAsync();
//当前分配的设备组code
var deviceGroupCodes = await _dbContext.Queryable<AppointmentAreaAssignmentEntity>()
.Where(x => existsAreaCodes.Contains(x.CustomCode))
.Select(x => x.DeviceGroupCode)
.ToListAsync();
var deviceCodes = await _dbContext.Queryable<DeviceGroupRelationshipEntity>().Where(x => deviceGroupCodes.Contains(x.GroupCode)).Select(x => x.DeviceCode).ToListAsync();
var deviceUniqueNos = await _dbContext.Queryable<DeviceEntity>().Where(x => deviceCodes.Contains(x.Code)).Select(x => x.UniqueNo).ToListAsync();
return deviceUniqueNos;
}
/// <inheritdoc />
public async Task AutoResignAsync()
{
//获取外部人员
var externals = await _dbContext.Queryable<GainfoEntity>()
.Where(x => x.Type == GainfoUserTypeEnumType.External)
.ToListAsync();
var gainfoService = _serviceProvider.GetService<IGainfoService>();
await AutoResignBySettingAsync(externals,
(settings, factory) =>
{
var setting = settings.First(x => x.Factory == factory);
return setting.NoRecordAutoResignExternalDays;
},
async (g, l) =>
{
await gainfoService.ResignAsync(new GainfoResignRequest
{
Id = g.Id,
Reason = $"{l}天无通行记录",
Date = DateTime.Now
});
},
null, "自动归档外部人员异常");
}
private async Task AutoResignBySettingAsync(List<GainfoEntity> gainfos
, Func<List<FactorySettingResponse>, string, int> getleaveDay
, Func<GainfoEntity, int, Task> todo
, Expression<Func<DeviceUploadLogEntity, bool>> uploadLogAdditionalExp
, string errorMsgPrefix)
{
var settings = await _factorySettingService.GetListAsync(false);
var holidaies = await _dbContext.Queryable<HolidayEntity>()
.Select(x => new
{
x.Type,
x.Start,
x.End
})
.ToListAsync();
var weekends = new List<DayOfWeek>() { DayOfWeek.Saturday, DayOfWeek.Sunday };
//人员分组,key为factory
foreach (var todoGainfos in gainfos.GroupBy(x => x.Factory))
{
//设置为0则不处理
var leaveDay = getleaveDay(settings, todoGainfos.Key);
if (leaveDay == 0)
{
continue;
}
foreach (var gainfo in todoGainfos)
{
//获取最近一次通行记录的时间,如果没有则取创建时间
DateTime raiseDateTime = await _dbContext.Queryable<DeviceUploadLogEntity>()
.Where(x => x.UserUniqueNo == gainfo.Code)
.WhereIF(uploadLogAdditionalExp != null, uploadLogAdditionalExp)
.Select(x => SqlFunc.IsNull(SqlFunc.AggregateMax(x.RaiseDateTime), gainfo.CreateTime))
.SingleAsync();
var checkDates = GetDaysUntilToday(raiseDateTime);
var days = checkDates.Count;
foreach (var date in checkDates)
{
//date.DayOfWeek
foreach (var holiday in holidaies)
{
var isPresent = date >= holiday.Start && date <= holiday.Start;
if (isPresent)
{
if (holiday.Type == HolidayEnumType.Rest)
{
days--;
}
}
}
if (weekends.Contains(date.DayOfWeek))
{
days--;
}
}
if (days >= leaveDay)
{
try
{
await todo(gainfo, leaveDay);
}
catch (Exception e)
{
_logger.LogError(e, $"{errorMsgPrefix}:{e.Message}");
}
}
}
}
}
//*********************************************************************************************************************
private List<DateOnly> GetDaysUntilToday(DateTime begin)
{
var start = DateOnly.FromDateTime(begin.Date);
var today = DateOnly.FromDateTime(DateTime.Today);
if (start > today) return new List<DateOnly>();
var days = new List<DateOnly>();
for (var d = start; d < today; d = d.AddDays(1))
{
days.Add(d);
}
days.Remove(DateOnly.FromDateTime(begin.Date));
return days;
}
private async Task GenerateDeviceTasksAsync(VisitorAppointmentDetailEntity detail, bool withWorkplace, DeviceTaskEnumType deviceTaskType, string source)
{
var gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.IdNo == detail.IdNo || x.Code == detail.IdNo).SingleAsync();
gainfo.ThrowIfNull("人员信息不存在");
var areaCodes = GetValidAreaCodes(detail, withWorkplace).ToList();
if (areaCodes.IsEmpty()) return;
var existsAreaCodes = await _dbContext.Queryable<AppointmentAreaEntity>().Where(x => areaCodes.Contains(x.CustomCode)).Select(x => x.CustomCode).ToListAsync();
//当前分配的设备组code
var deviceGroupCodes = await _dbContext.Queryable<AppointmentAreaAssignmentEntity>()
.Where(x => existsAreaCodes.Contains(x.CustomCode))
.Select(x => x.DeviceGroupCode)
.ToListAsync();
var deviceCodes = await _dbContext.Queryable<DeviceGroupRelationshipEntity>().Where(x => deviceGroupCodes.Contains(x.GroupCode)).Select(x => x.DeviceCode).ToListAsync();
var deviceUniqueNos = await _dbContext.Queryable<DeviceEntity>().Where(x => deviceCodes.Contains(x.Code)).Select(x => new { x.UniqueNo, x.TenantId }).ToListAsync();
await _dbContext.InsertAsync(deviceUniqueNos.Select(x => new DeviceTaskEntity
{
DeviceType = DeviceTypeEnumType.Door,
DeviceUniqueNo = x.UniqueNo,
Status = DeviceTaskStatusEnumType.Wait,
UserNo = gainfo.No,
Type = deviceTaskType,
Priority = 100,
TenantId = x.TenantId,
Source = source,
Version = 0
}).ToList());
}
/// <summary>
/// 获取有效的区域编码
/// </summary>
/// <param name="detail"></param>
/// <param name="withWorkplace"></param>
/// <returns></returns>
private static IEnumerable<string> GetValidAreaCodes(VisitorAppointmentDetailEntity detail, bool withWorkplace)
{
if (detail.IsEnterDoorArea)
{
yield return detail.ApplyDoorArea;
}
if (withWorkplace && detail.IsEnterWorkplace)
{
foreach (var item in detail.ApplyWorkplaceAreas)
{
yield return item;
}
}
}
private async Task UploadFaceToDhAsync(string idNo, string base64Image)
{
try
{
var r = await _dhApi.SendFaceAsync(new FaceRequest
{
IdNo = idNo,
Face = base64Image
});
_logger.LogInformation("上传face数据到大华成功: {idNo} . {json}", idNo, r.ToJson());
}
catch (Exception e)
{
_logger.LogError(e, "上传face数据到大华失败:{msg}", e.Message);
}
}
}

View File

@@ -0,0 +1,69 @@
using Dlhis.Basic.BusinessShift.Request;
using Dlhis.Basic.BusinessShift.Response;
using Dlhis.Basic.BusinessShift.Services;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.BusinessShift.Controllers;
/// <summary>
/// 餐次
/// </summary>
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class BusinessShiftsController : ControllerBase
{
private readonly IBusinessPlaceShiftService _businessPlaceShiftService;
public BusinessShiftsController(IBusinessPlaceShiftService businessPlaceShiftService)
{
_businessPlaceShiftService = businessPlaceShiftService;
}
/// <summary>
/// 餐别分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("page")]
public async Task<Pagination<BusinessPlaceShiftResponse>> GetPageAsync([FromQuery] BusinessPlaceShiftPageRequest request)
{
return await _businessPlaceShiftService.GetPageAsync(request);
}
/// <summary>
/// 餐别列表
/// </summary>
/// <returns></returns>
[HttpGet("list")]
public async Task<List<BusinessPlaceShiftResponse>> GetListAsync()
{
return await _businessPlaceShiftService.GetListAsync();
}
/// <summary>
/// 餐别保存
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("save")]
public async Task<Guid> SaveAsync(BusinessPlaceShiftSaveRequest request)
{
return await _businessPlaceShiftService.SaveAsync(request);
}
/// <summary>
/// 保存餐次段
/// </summary>
/// <param name="requests"></param>
/// <returns></returns>
[HttpPost("meal/save")]
[Transactional]
public async Task SaveMealShiftsAsync(List<BusinessPlaceShiftSaveMealShiftRequest> requests)
{
await _businessPlaceShiftService.SaveMealShiftsAsync(requests);
}
}

View File

@@ -0,0 +1,8 @@
using Kurisu.AspNetCore.DataAccess.Dto;
namespace Dlhis.Basic.BusinessShift.Request;
public class BusinessPlaceShiftPageRequest : PageDto
{
}

View File

@@ -0,0 +1,46 @@
using System.ComponentModel.DataAnnotations;
using Dlhis.Entity.Canteen.Enums;
using Kurisu.AspNetCore.CustomClass;
namespace Dlhis.Basic.BusinessShift.Request;
public class BusinessPlaceShiftSaveMealShiftRequest : IValidatableObject
{
public long? Id { get; set; }
/// <summary>
/// 餐别Code
/// </summary>
public Guid ShiftCode { get; set; }
/// <summary>
/// 餐次 ShiftEnumType
/// </summary>
[EnumDataType(typeof(ShiftEnumType))]
public ShiftEnumType ShiftType { get; set; }
/// <summary>
/// 序号
/// </summary>
public int Sequence { get; set; } = 100;
/// <summary>
/// 时间段
/// </summary>
[Required(ErrorMessage = "时间段不可为空")]
public TimePeriod TimePeriod { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (TimePeriod == null)
{
yield return new ValidationResult("时间段配置错误", new[] { nameof(TimePeriod) });
}
if (TimePeriod!.Start == TimePeriod.End)
{
yield return new ValidationResult("时间段设置区间有误,开始时段不能等于结束时段.", new[] { nameof(TimePeriod) });
}
}
}

View File

@@ -0,0 +1,20 @@
using System.ComponentModel.DataAnnotations;
namespace Dlhis.Basic.BusinessShift.Request;
public class BusinessPlaceShiftSaveRequest
{
public long? Id { get; set; }
/// <summary>
/// 自定义代号 mealshift
/// </summary>
[Required(ErrorMessage = "餐次手工号不能为空")]
public string CustomCode { get; set; }
/// <summary>
/// 餐次名称
/// </summary>
[Required(ErrorMessage = "餐次名称")]
public string Name { get; set; }
}

View File

@@ -0,0 +1,26 @@
namespace Dlhis.Basic.BusinessShift.Response;
public class BusinessPlaceShiftResponse
{
public long Id { get; set; }
/// <summary>
/// 代号
/// </summary>
public Guid Code { get; set; }
/// <summary>
/// 自定义代号
/// </summary>
public string CustomCode { get; set; }
/// <summary>
/// 餐次名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 就餐时间段
/// </summary>
public List<MealShiftResponse> MealShifts { get; set; }
}

View File

@@ -0,0 +1,31 @@
namespace Dlhis.Basic.BusinessShift.Response;
public class BusinessPlaceShiftTinyResponse
{
/// <summary>
/// 无用字段,暂时不删除
/// </summary>
public string CustomCode { get; set; }
/// <summary>
/// 餐次名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 经营开始时间
/// </summary>
public TimeOnly Start { get; set; }
/// <summary>
/// 经营结束时间
/// </summary>
public TimeOnly End { get; set; }
public int Sequence { get; set; }
/// <summary>
/// 时间段描述
/// </summary>
public string TimePeriodDesc => $"{Start}--{End}";
}

View File

@@ -0,0 +1,20 @@
using Dlhis.Entity.Canteen.Enums;
using Kurisu.AspNetCore.Utils.Extensions;
namespace Dlhis.Basic.BusinessShift.Response
{
public class MealShiftResponse
{
public long Id { get; set; }
public Guid ShiftCode { get; set; }
public ShiftEnumType ShiftType { get; set; }
public string Name => ShiftType.GetDescription();
public TimeOnly Start { get; set; }
public TimeOnly End { get; set; }
}
}

View File

@@ -0,0 +1,24 @@
using Dlhis.Basic.Places.Request;
using Dlhis.Basic.BusinessShift.Request;
using Dlhis.Basic.BusinessShift.Response;
using Dlhis.Basic.Places.Response;
using Kurisu.AspNetCore.DataAccess.Dto;
namespace Dlhis.Basic.BusinessShift.Services;
public interface IBusinessPlaceShiftService : IScopeDependency
{
Task<Pagination<BusinessPlaceShiftResponse>> GetPageAsync(BusinessPlaceShiftPageRequest request);
Task<List<BusinessPlaceShiftResponse>> GetListAsync();
Task<Guid> SaveAsync(BusinessPlaceShiftSaveRequest request);
Task SaveMealShiftsAsync(List<BusinessPlaceShiftSaveMealShiftRequest> requests);
Task<BusinessPlaceWithShiftResponse> GetShiftsByPlaceCustomCodeAsync(string placeCustomCode);
Task<List<DeviceCodeNameDetail>> GetAssignmentsAsync(Guid code);
Task AssignAsync(DispositionDeviceRequest request);
}

View File

@@ -0,0 +1,276 @@
using Dlhis.Basic.Places.Request;
using Dlhis.Basic.BusinessShift.Request;
using Dlhis.Basic.BusinessShift.Response;
using Dlhis.Basic.Places.Response;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Device.Entities;
using Dlhis.Sys.Api;
using Kurisu.AspNetCore.CustomClass;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
using Kurisu.AspNetCore.Utils.Extensions;
using Mapster;
namespace Dlhis.Basic.BusinessShift.Services.Implements;
public class BusinessPlaceShiftService : IBusinessPlaceShiftService
{
private readonly IDbContext _dbContext;
private readonly ITenantApi _tenantApi;
public BusinessPlaceShiftService(IDbContext dbContext, ITenantApi tenantApi)
{
_dbContext = dbContext;
_tenantApi = tenantApi;
}
public async Task<Pagination<BusinessPlaceShiftResponse>> GetPageAsync(BusinessPlaceShiftPageRequest request)
{
var page = await _dbContext.Queryable<BusinessShiftEntity>()
.WhereIF(request.Search.IsPresent(), shift => shift.CustomCode.Contains(request.Search) || shift.Name.Contains(request.Search))
.Select<BusinessPlaceShiftResponse>()
.ToPageListAsync(request);
var shiftCodes = page.Data.Select(x => x.Code).ToList();
//下级就餐时间段
var mealShifts = await _dbContext.Queryable<BusinessShiftMealRelationshipEntity>()
.Where(x => shiftCodes.Contains(x.ShiftCode))
.Select((x) => new MealShiftResponse
{
Id = x.Id,
ShiftCode = x.ShiftCode,
ShiftType = x.ShiftType,
Start = x.Start,
End = x.End,
})
.ToListAsync();
page.Data.ForEach(x => { x.MealShifts = mealShifts.Where(item => item.ShiftCode == x.Code).ToList(); });
return page;
}
public async Task<List<BusinessPlaceShiftResponse>> GetListAsync()
{
var result = await _dbContext.Queryable<BusinessShiftEntity>()
.Select<BusinessPlaceShiftResponse>()
.ToListAsync();
return result;
}
public async Task<Guid> SaveAsync(BusinessPlaceShiftSaveRequest request)
{
await CheckExistsAsync(request);
if (!request.Id.HasValue)
{
var entity = request.Adapt<BusinessShiftEntity>();
entity.CustomCode = request.CustomCode;
entity.Code = Guid.NewGuid();
await _dbContext.InsertAsync(entity);
return entity.Code;
}
else
{
var entity = await _dbContext.Queryable<BusinessShiftEntity>().FirstAsync(x => x.Id == request.Id);
entity.ThrowIfNull("餐别不存在");
request.Adapt(entity);
await _dbContext.UpdateAsync(entity);
return entity.Code;
}
}
public async Task SaveMealShiftsAsync(List<BusinessPlaceShiftSaveMealShiftRequest> requests)
{
var shiftCode = requests[0].ShiftCode;
var shift = await CheckExistsShiftAsync(shiftCode);
await _dbContext.Deleteable<BusinessShiftMealRelationshipEntity>().Where(x => x.ShiftCode == shiftCode).ExecuteCommandAsync();
foreach (var request in requests)
{
request.Id = null;
await CheckExistsMealShiftAsync(request);
await DuplicateTimePeriodAsync(request);
if (!request.Id.HasValue)
{
var entity = request.Adapt<BusinessShiftMealRelationshipEntity>();
entity.ShiftCode = shift.Code;
entity.ShiftCustomCode = shift.CustomCode;
entity.Start = request.TimePeriod.Start;
entity.End = request.TimePeriod.End;
await _dbContext.InsertAsync(entity);
}
else
{
var entity = await _dbContext.Queryable<BusinessShiftMealRelationshipEntity>()
.Where(x => x.ShiftCode == shiftCode)
.SingleAsync(x => x.Id == request.Id);
entity.ThrowIfNull("餐次段不存在");
entity.Start = request.TimePeriod.Start;
entity.End = request.TimePeriod.End;
request.Adapt(entity);
await _dbContext.UpdateAsync(entity);
}
}
}
public async Task<BusinessPlaceWithShiftResponse> GetShiftsByPlaceCustomCodeAsync(string placeCustomCode)
{
var place = await _dbContext.Queryable<BusinessPlaceEntity>().Where(x => x.CustomCode == placeCustomCode).FirstAsync();
if (place == null)
{
return new BusinessPlaceWithShiftResponse()
{
Shifts = new List<BusinessPlaceShiftTinyResponse>()
};
}
var tenant = await _tenantApi.GetTenantByCodeAsync(place.TenantId);
var relationship = await _dbContext.Queryable<BusinessPlaceShiftRelationshipEntity>().Where(x => x.PlaceCode == place.Code).FirstAsync();
if (relationship == null)
{
return new BusinessPlaceWithShiftResponse()
{
CustomCode = placeCustomCode,
Name = place.Name,
TenantCode = tenant.Code,
TenantName = tenant.Name,
Shifts = new List<BusinessPlaceShiftTinyResponse>()
};
}
var shifts = await _dbContext.Queryable<BusinessShiftMealRelationshipEntity>()
.Where(x => x.ShiftCode == relationship.ShiftCode)
.OrderBy(x => x.Sequence) //排序
.ToListAsync();
var list = new List<BusinessPlaceShiftTinyResponse>();
foreach (BusinessShiftMealRelationshipEntity shiftinfo in shifts)
{
var shift = new BusinessPlaceShiftTinyResponse
{
CustomCode = shiftinfo.Id.ToString(),
Name = shiftinfo.ShiftType.GetDescription(),
Start = shiftinfo.Start,
End = shiftinfo.End,
Sequence = shiftinfo.Sequence
};
list.Add(shift);
}
return new BusinessPlaceWithShiftResponse
{
CustomCode = placeCustomCode,
Name = place.Name,
TenantCode = tenant.Code,
TenantName = tenant.Name,
Shifts = list.OrderBy(x => x.Sequence).ToList()
};
}
public async Task<List<DeviceCodeNameDetail>> GetAssignmentsAsync(Guid code)
{
return await _dbContext.Queryable<DeviceRegistryEntity>()
.LeftJoin<DeviceEntity>((x, d) => x.DeviceUniqueNo == d.UniqueNo)
.Where(x => x.BusinessPlaceCode == code)
.Select((x, d) => new DeviceCodeNameDetail
{
UniqueNo = x.DeviceUniqueNo,
UniqueName = d.DeployPlace
})
.ToListAsync();
}
public async Task AssignAsync(DispositionDeviceRequest request)
{
var place = await _dbContext.Queryable<BusinessPlaceEntity>().Where(x => x.Code == request.PlaceCode).SingleAsync();
place.ThrowIfNull("营业点不存在");
var registries = await _dbContext.Queryable<DeviceRegistryEntity>()
.Where(x => x.BusinessPlaceCode == request.PlaceCode || request.UniqueNos.Contains(x.DeviceUniqueNo))
.ToListAsync();
registries.ForEach(item => { item.BusinessPlaceCode = request.UniqueNos.Contains(item.DeviceUniqueNo) ? request.PlaceCode : null; });
await _dbContext.UpdateAsync(registries);
}
//*********************************************** help methods ***************************************************//
/// <summary>
/// 时间段重合检查
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
private async Task DuplicateTimePeriodAsync(BusinessPlaceShiftSaveMealShiftRequest request)
{
var periods = await _dbContext.Queryable<BusinessShiftMealRelationshipEntity>()
.Where(x => x.ShiftCode == request.ShiftCode)
.WhereIF(request.Id.HasValue, x => x.Id != request.Id)
.Select(x => new TimePeriod
{
Start = x.Start,
End = x.End
})
.ToListAsync();
foreach (var period in periods)
{
period.IsDuplicate(request.TimePeriod).ThrowIfTrue($"存在时间段重合[{period.Start}-{period.End}]");
}
}
/// <summary>
/// 检查重复
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
private async Task CheckExistsAsync(BusinessPlaceShiftSaveRequest request)
{
var existsSameCustomCode = await _dbContext.Queryable<BusinessShiftEntity>()
.Where(x => x.CustomCode == request.CustomCode || x.Name == request.Name)
.WhereIF(request.Id.HasValue, x => x.Id != request.Id)
.AnyAsync();
existsSameCustomCode.ThrowIfTrue($"自定义手工号或者名称存在重复,请检查.");
}
private async Task<BusinessShiftEntity> CheckExistsShiftAsync(Guid shiftCode)
{
var shift = await _dbContext.Queryable<BusinessShiftEntity>().Where(x => x.Code == shiftCode).SingleAsync();
shift.ThrowIfNull("餐次不存在");
return shift;
}
private async Task CheckExistsMealShiftAsync(BusinessPlaceShiftSaveMealShiftRequest request)
{
var exists = await _dbContext.Queryable<BusinessShiftMealRelationshipEntity>()
.Where(x => x.ShiftCode == request.ShiftCode)
.Where(x => x.ShiftType == request.ShiftType)
.WhereIF(request.Id.HasValue, x => x.Id != request.Id)
.AnyAsync();
exists.ThrowIfTrue("重复设置!");
}
}

View File

@@ -0,0 +1,36 @@
using Dlhis.Basic.Common.ApiLog.Request;
using Dlhis.Basic.Common.ApiLog.Response;
using Dlhis.Basic.Common.ApiLog.Services.Implements;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.UnifyResultAndValidation.Aop;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Common.ApiLog.Controller;
/// <summary>
/// API日志控制器
/// </summary>
[Authorize(Roles = "admin")]
[Route("api/[controller]")]
[ApiController]
public class ApiLogController : ControllerBase
{
private readonly IApiLogService _apiLogService;
public ApiLogController(IApiLogService apiLogService)
{
_apiLogService = apiLogService;
}
/// <summary>
/// 获取api日志
/// </summary>
/// <returns></returns>
[DisableApiLog]
[HttpGet("logs")]
public async Task<Pagination<ApiLogResponse>> GetLogsAsync([FromQuery] ApiLogRequest request)
{
return await _apiLogService.GetLogsAsync(request);
}
}

View File

@@ -0,0 +1,36 @@
using Dlhis.Basic.Common.ApiLog.Request;
using Dlhis.Basic.Common.ApiLog.Response;
using Dlhis.Basic.Common.ApiLog.Services;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.UnifyResultAndValidation.Aop;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Common.ApiLog.Controller;
/// <summary>
/// API日志控制器
/// </summary>
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class OperateLogsController : ControllerBase
{
private readonly IOperateLog _operateLog;
public OperateLogsController(IOperateLog operateLog)
{
_operateLog = operateLog;
}
/// <summary>
/// 获取操作日志
/// </summary>
/// <returns></returns>
[DisableApiLog]
[HttpGet("page")]
public async Task<Pagination<OperateLogResponse>> GetOperateLogPageAsync([FromQuery] OperateLogPageRequest request)
{
return await _operateLog.GetOperateLogPageAsync(request);
}
}

View File

@@ -0,0 +1,27 @@
using System.ComponentModel.DataAnnotations;
using Kurisu.AspNetCore.CustomClass;
using Kurisu.AspNetCore.DataAccess.Dto;
namespace Dlhis.Basic.Common.ApiLog.Request;
public class ApiLogRequest : PageDto, IValidatableObject
{
/// <summary>
/// 日志级别 LogLevel
/// </summary>
[EnumDataType(typeof(LogLevel))]
public LogLevel? Level { get; set; }
public DateTimePeriod SearchDateTimePeriod { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (SearchDateTimePeriod is { End: not null })
{
SearchDateTimePeriod.End = SearchDateTimePeriod.End.Value.AddDays(1).AddSeconds(-1);
}
yield break;
}
}

View File

@@ -0,0 +1,9 @@
using Kurisu.AspNetCore.DataAccess.Dto;
namespace Dlhis.Basic.Common.ApiLog.Request
{
public class OperateLogPageRequest : PageDto
{
}
}

View File

@@ -0,0 +1,54 @@
using Newtonsoft.Json;
namespace Dlhis.Basic.Common.ApiLog.Response
{
public class ApiLogResponse
{
/// <summary>
/// 时间UTC
/// </summary>
[JsonIgnore]
public string Timestamp { get; set; }
/// <summary>
/// 产生时间
/// </summary>
public DateTime RaiseTime
{
get { return DateTime.Parse(Timestamp).ToLocalTime(); }
}
/// <summary>
/// 级别
/// </summary>
public string Level { get; set; }
/// <summary>
/// 模板
/// </summary>
[JsonIgnore]
public string Template { get; set; }
/// <summary>
/// 消息内容
/// </summary>
public string Message { get; set; }
/// <summary>
/// 异常内容
/// </summary>
public string Exception { get; set; }
/// <summary>
/// 属性
/// </summary>
[JsonIgnore]
public string Properties { get; set; }
/// <summary>
/// 时间
/// </summary>
[JsonIgnore]
public DateTime _TS { get; set; }
}
}

View File

@@ -0,0 +1,10 @@
namespace Dlhis.Basic.Common.ApiLog.Response;
public class OperateLogResponse
{
public string Content { get; set; }
public string Operator { get; set; }
public DateTime CreateTime { get; set; }
}

View File

@@ -0,0 +1,40 @@
using Dlhis.Basic.Common.ApiLog.Request;
using Dlhis.Basic.Common.ApiLog.Response;
using Dlhis.Basic.Common.ApiLog.Services.Implements;
using Dlhis.Entity.Common.Entities;
using Kurisu.AspNetCore.CustomClass;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
using Kurisu.AspNetCore.Utils.Extensions;
using SqlSugar;
namespace Dlhis.Basic.Common.ApiLog.Services;
public class ApiLogService : IApiLogService
{
private readonly IDbContext _dbContext;
public ApiLogService(IDbContext dbContext)
{
_dbContext = dbContext;
}
public async Task<Pagination<ApiLogResponse>> GetLogsAsync(ApiLogRequest request)
{
var logs = await _dbContext.ChangeDb("log").Queryable<ApiLogEntity>()
.WhereIF(request.SearchDateTimePeriod.HasValue(), x => x._ts >= request.SearchDateTimePeriod.Start && x._ts <= request.SearchDateTimePeriod.End)
.WhereIF(request.Level.HasValue, x => x.Level == request.Level)
.WhereIF(request.Search.IsPresent(), x => x.Message.Contains(request.Search))
.OrderBy(x => x._ts, OrderByType.Desc)
.Select<ApiLogResponse>()
.ToPageListAsync(request.PageIndex, request.PageSize);
return new Pagination<ApiLogResponse>
{
PageIndex = request.PageIndex,
PageSize = request.PageSize,
Total = 0,
Data = logs
};
}
}

View File

@@ -0,0 +1,14 @@
using Dlhis.Basic.Common.ApiLog.Request;
using Dlhis.Basic.Common.ApiLog.Response;
using Dlhis.Entity.Common.Enums;
using Kurisu.AspNetCore.DataAccess.Dto;
namespace Dlhis.Basic.Common.ApiLog.Services;
public interface IOperateLog : IScopeDependency
{
Task LogAsync(OperateLogType type, string content);
Task<Pagination<OperateLogResponse>> GetOperateLogPageAsync(OperateLogPageRequest request);
}

View File

@@ -0,0 +1,10 @@
using Dlhis.Basic.Common.ApiLog.Request;
using Dlhis.Basic.Common.ApiLog.Response;
using Kurisu.AspNetCore.DataAccess.Dto;
namespace Dlhis.Basic.Common.ApiLog.Services.Implements;
public interface IApiLogService : IScopeDependency
{
Task<Pagination<ApiLogResponse>> GetLogsAsync(ApiLogRequest request);
}

View File

@@ -0,0 +1,70 @@
using Dlhis.Basic.Common.ApiLog.Request;
using Dlhis.Basic.Common.ApiLog.Response;
using Dlhis.Entity.Common.Entities;
using Dlhis.Entity.Common.Enums;
using Kurisu.AspNetCore.Authentication.Abstractions;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
using SqlSugar;
namespace Dlhis.Basic.Common.ApiLog.Services.Implements;
public class OperateLogService : IOperateLog
{
private readonly ICurrentUser _currentUser;
private readonly ILogger<OperateLogService> _logger;
private readonly IDbContext _dbContext;
public OperateLogService(IDbContext dbContext, ICurrentUser currentUser, ILogger<OperateLogService> logger)
{
_currentUser = currentUser;
_logger = logger;
_dbContext = dbContext.ChangeDb("log");
}
/// <inheritdoc />
public async Task LogAsync(OperateLogType type, string content)
{
var now = DateTime.Now;
var userId = _currentUser.GetIntSubjectId();
var userName = _currentUser.GetName();
var tenantId = _currentUser.GetStringTenantId();
try
{
await _dbContext.InsertAsync(new OperateLogEntity
{
Type = type,
Content = content,
Operator = userName,
CreateTime = now,
ModifiedTime = now,
CreatedBy = userId,
ModifiedBy = userId,
TenantId = tenantId
});
}
catch (Exception e)
{
_logger.LogError(e, "记录操作日志失败:{error}", e.Message);
}
}
/// <inheritdoc />
public async Task<Pagination<OperateLogResponse>> GetOperateLogPageAsync(OperateLogPageRequest request)
{
var tenantId = _currentUser.GetStringTenantId();
return await _dbContext.Queryable<OperateLogEntity>()
.Where(x => x.TenantId == tenantId)
.Select(x => new OperateLogResponse
{
Content = x.Content,
Operator = x.Operator,
CreateTime = x.CreateTime
})
.OrderBy(x => x.CreateTime, OrderByType.Desc)
.ToPageListAsync(request);
}
}

View File

@@ -0,0 +1,44 @@
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Common.Entities;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
using Kurisu.AspNetCore.Utils.Extensions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Common.BusinessEvents;
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class UserBusinessEventController : ControllerBase
{
private readonly IDbContext _dbContext;
public UserBusinessEventController(IDbContext dbContext)
{
_dbContext = dbContext;
}
/// <summary>
/// 获取用户业务事件分页数据
/// </summary>
/// <returns></returns>
[HttpGet("page")]
public async Task<Pagination<UserBusinessEventResponse>> GetUserBusinessEventPageAsync([FromQuery] UserBusinessEventPageRequest request)
{
return await _dbContext.Queryable<UserBusinessEventEntity>()
.LeftJoin<GainfoEntity>((x, ga) => x.UserCode == ga.Code)
.WhereIF(request.Search.IsPresent(), (x, ga) => x.UserCode == request.Search || ga.Name.Contains(request.Search))
.Select((x, ga) => new UserBusinessEventResponse
{
UserCode = x.UserCode,
EventType = x.EventType,
UserName = ga.Name,
Content = x.Content
})
.ToPageListAsync(request);
}
}

View File

@@ -0,0 +1,13 @@
using System.ComponentModel.DataAnnotations;
using Kurisu.AspNetCore.DataAccess.Dto;
namespace Dlhis.Basic.Common.BusinessEvents;
public class UserBusinessEventPageRequest : PageDto
{
/// <summary>
/// 事件类型
/// </summary>
[Required(ErrorMessage = "事件类型不能为空")]
public string EventType { get; set; }
}

View File

@@ -0,0 +1,24 @@
namespace Dlhis.Basic.Common.BusinessEvents;
public class UserBusinessEventResponse
{
/// <summary>
/// 工号
/// </summary>
public string UserCode { get; set; }
/// <summary>
/// 事件类型
/// </summary>
public string EventType { get; set; }
/// <summary>
/// 用户名称
/// </summary>
public string UserName { get; set; }
/// <summary>
/// 事件内容
/// </summary>
public string Content { get; set; }
}

View File

@@ -0,0 +1,110 @@
using System.Reflection;
using Dlhis.Basic.Common.FileOperation.Response;
using Dlhis.Entity.Basic.Entity;
using Kurisu.AspNetCore.CustomClass;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
using Kurisu.AspNetCore.UnifyResultAndValidation.Aop;
using Kurisu.AspNetCore.Utils.Extensions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Common.EnumSetting;
/// <summary>
/// 枚举
/// </summary>
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class EnumsController : ControllerBase
{
private readonly IDbContext _dbContext;
public EnumsController(IDbContext dbContext)
{
_dbContext = dbContext;
}
/// <summary>
/// 获取所有枚举/基础类型
/// </summary>
/// <param name="code">code</param>
/// <returns></returns>
[DisableApiLog]
[HttpGet]
public List<CommonEnumResponse> GetEnums(string code)
{
var types = Assembly.Load("Dlhis.Entity")
.GetTypes()
.Where(x => x.IsEnum);
var result = types.Select(x =>
{
var d = x.GetDescription();
return new CommonEnumResponse
{
Code = x.Name,
Name = d,
Data = x.GetFields(BindingFlags.Public | BindingFlags.Static).Select(item =>
{
var e = (Enum)Enum.Parse(item.FieldType, item.GetValue(null).ToString());
var fd = e.GetDescription();
return new KeyValueDto<string, object>
{
Key = fd,
Value = (int)item.GetValue(null)
};
})
.OrderBy(x => x.Value)
.ToList()
};
})
.ToList();
var dbTypes = _dbContext.Queryable<BasicTypeEntity>().OrderBy(x => x.Sequence).ToList();
var dbResult = dbTypes.GroupBy(x => x.Type).Select(g =>
{
var type = g.Key;
return new CommonEnumResponse
{
Code = type,
Name = type,
Data = g.AsEnumerable().Select(x => new KeyValueDto<string, object>
{
Key = x.Display,
Value = x.Code
})
.OrderBy(x => x.Value)
.ToList()
};
});
result.AddRange(dbResult);
result.Add(GetCurrentEnums("LogLevel", "日志级别", typeof(LogLevel)));
return result.WhereIf(code.IsPresent(), x => x.Code == code).ToList();
}
private static CommonEnumResponse GetCurrentEnums(string code, string name, Type enumType)
{
return new CommonEnumResponse
{
Code = code,
Name = name,
Data = enumType.GetFields(BindingFlags.Public | BindingFlags.Static).Select(item =>
{
var e = (Enum)Enum.Parse(item.FieldType, item.GetValue(null).ToString());
var fd = e.GetDescription();
return new KeyValueDto<string, object>
{
Key = fd,
Value = (int)item.GetValue(null)
};
})
.OrderBy(x => x.Value)
.ToList()
};
}
}

View File

@@ -0,0 +1,18 @@
using System.ComponentModel.DataAnnotations;
using Kurisu.AspNetCore.ConfigurableOptions.Attributes;
namespace Dlhis.Basic.Common.FileOperation.Configurations;
[Configuration("MinIO")]
public class MinIOOptions
{
[Required]
public string Endpoint { get; set; }
[Required]
public string AccessKey { get; set; }
[Required]
public string SecretKey { get; set; }
}

View File

@@ -0,0 +1,13 @@
namespace Dlhis.Basic.Common.FileOperation.Constants;
public static class FileBucketConstants
{
/// <summary>
/// 文件buckets
/// </summary>
public static List<string> Buckets { get; } = new()
{
"restaurant",
"apk"
};
}

View File

@@ -0,0 +1,86 @@
using System.ComponentModel.DataAnnotations;
using Dlhis.Basic.Common.FileOperation.Request;
using Dlhis.Basic.Common.FileOperation.Response;
using Dlhis.Basic.Common.FileOperation.Services;
using Kurisu.AspNetCore.DataAccess.Dto;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Common.FileOperation.Controllers;
/// <summary>
/// 文件操作
/// </summary>
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class FileController : ControllerBase
{
private readonly IMinioService _minioService;
private readonly IFileVersionService _fileVersionService;
public FileController(IMinioService minioService, IFileVersionService fileVersionService)
{
_minioService = minioService;
_fileVersionService = fileVersionService;
}
/// <summary>
/// 文件上传
/// </summary>
/// <param name="request"></param>
/// <returns>相对路径</returns>
[HttpPost("{Bucket}/upload")]
public async Task<string> UploadFileAsync([FromForm] UploadFileRequest request)
{
return await _minioService.UploadFileAsync(request.Bucket, request.File);
}
/// <summary>
/// 文件上传(版本)
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Authorize]
[HttpPost("{Bucket}/version/upload")]
[RequestFormLimits(MultipartBodyLengthLimit = int.MaxValue)]
[RequestSizeLimit(int.MaxValue)]
public async Task<string> UploadFileAsync([FromForm] FileVersionUploadRequest request)
{
return await _fileVersionService.UploadFileAsync(request);
}
/// <summary>
/// 文件版本分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("version/page")]
public async Task<Pagination<FileVersionResponse>> GetPageAsync([FromQuery] PageDto request)
{
return await _fileVersionService.GetPageAsync(request);
}
/// <summary>
/// 文件版本列表
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[HttpGet("version/list")]
public async Task<List<FileVersionResponse>> GetListByCodeAsync([Required] string code)
{
return await _fileVersionService.GetListByCodeAsync(code);
}
/// <summary>
/// 文件版本最新
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[HttpGet("version/last")]
public async Task<FileVersionResponse> GetLastByCodeAsync([Required] string code)
{
return await _fileVersionService.GetLastByCodeAsync(code);
}
}

View File

@@ -0,0 +1,45 @@
using System.ComponentModel.DataAnnotations;
using Dlhis.Basic.Common.FileOperation.Constants;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Common.FileOperation.Request;
public class FileVersionUploadRequest : IValidatableObject
{
/// <summary>
/// bucket
/// </summary>
[FromRoute]
public string Bucket { get; set; }
/// <summary>
/// 文件
/// </summary>
[FromForm]
public IFormFile File { get; set; }
/// <summary>
/// 文件名称
/// </summary>
[Required]
public string Name { get; set; }
/// <summary>
/// code
/// </summary>
[Required]
public string Code { get; set; }
/// <summary>
/// 描述信息
/// </summary>
public string Description { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (!FileBucketConstants.Buckets.Contains(Bucket))
{
yield return new ValidationResult($"不支持{Bucket}", new[] { nameof(Bucket) });
}
}
}

View File

@@ -0,0 +1,27 @@
using System.ComponentModel.DataAnnotations;
using Dlhis.Basic.Common.FileOperation.Constants;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Common.FileOperation.Request;
public class UploadFileRequest : IValidatableObject
{
/// <summary>
/// bucket
/// </summary>
[FromRoute]
public string Bucket { get; set; }
/// <summary>
/// 文件
/// </summary>
public IFormFile File { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (!FileBucketConstants.Buckets.Contains(Bucket))
{
yield return new ValidationResult($"不支持{Bucket}", new[] { nameof(Bucket) });
}
}
}

View File

@@ -0,0 +1,12 @@
using Kurisu.AspNetCore.CustomClass;
namespace Dlhis.Basic.Common.FileOperation.Response;
public class CommonEnumResponse
{
public string Code { get; set; }
public string Name { get; set; }
public List<KeyValueDto<string, object>> Data { get; set; }
}

View File

@@ -0,0 +1,31 @@
namespace Dlhis.Basic.Common.FileOperation.Response;
public class FileVersionResponse
{
public long Id { get; set; }
/// <summary>
/// 文件名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 文件code
/// </summary>
public string Code { get; set; }
/// <summary>
/// 版本号
/// </summary>
public int Version { get; set; }
/// <summary>
/// 描述信息
/// </summary>
public string Description { get; set; }
/// <summary>
/// 文件地址
/// </summary>
public string Url { get; set; }
}

View File

@@ -0,0 +1,16 @@
using Dlhis.Basic.Common.FileOperation.Request;
using Dlhis.Basic.Common.FileOperation.Response;
using Kurisu.AspNetCore.DataAccess.Dto;
namespace Dlhis.Basic.Common.FileOperation.Services;
public interface IFileVersionService : IScopeDependency
{
Task<string> UploadFileAsync(FileVersionUploadRequest request);
Task<Pagination<FileVersionResponse>> GetPageAsync(PageDto request);
Task<List<FileVersionResponse>> GetListByCodeAsync(string code);
Task<FileVersionResponse> GetLastByCodeAsync(string code);
}

View File

@@ -0,0 +1,35 @@
namespace Dlhis.Basic.Common.FileOperation.Services;
public interface IMinioService : ISingletonDependency
{
/// <summary>
/// bucket不存在即创建
/// </summary>
/// <param name="bucket"></param>
/// <returns></returns>
Task CreateBucketIfNotExistsAsync(string bucket);
/// <summary>
/// 判断是否存在bucket
/// </summary>
/// <param name="bucket"></param>
/// <returns></returns>
Task<bool> ExistsBucketAsync(string bucket);
/// <summary>
/// 判断文件是否存在
/// </summary>
/// <param name="bucket"></param>
/// <param name="objectName"></param>
/// <returns></returns>
Task<bool> ExistsFileAsync(string bucket, string objectName);
/// <summary>
/// 上传文件
/// </summary>
/// <param name="bucket"></param>
/// <param name="formFile"></param>
/// <returns></returns>
Task<string> UploadFileAsync(string bucket, IFormFile formFile);
}

View File

@@ -0,0 +1,74 @@
using Dlhis.Basic.Common.FileOperation.Request;
using Dlhis.Basic.Common.FileOperation.Response;
using Dlhis.Entity.Common.Entities;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
namespace Dlhis.Basic.Common.FileOperation.Services.Implements;
public class FileVersionService : IFileVersionService
{
private readonly IMinioService _minioService;
private readonly IDbContext _dbContext;
public FileVersionService(IMinioService minioService, IDbContext dbContext)
{
_minioService = minioService;
_dbContext = dbContext;
}
public async Task<string> UploadFileAsync(FileVersionUploadRequest request)
{
var url = await _minioService.UploadFileAsync(request.Bucket, request.File);
var version = (await GetLastVersionAsync(request.Code)) + 1;
await _dbContext.InsertAsync(new FileVersionEntity
{
Name = request.Name,
Url = url,
Description = request.Description,
Code = request.Code,
Version = version,
});
return url;
}
public async Task<Pagination<FileVersionResponse>> GetPageAsync(PageDto request)
{
return await _dbContext.Queryable<FileVersionEntity>()
.OrderByDescending(x => x.CreateTime)
.Select<FileVersionResponse>()
.ToPageListAsync(request);
}
public async Task<List<FileVersionResponse>> GetListByCodeAsync(string code)
{
return await _dbContext.Queryable<FileVersionEntity>()
.Where(x => x.Code == code)
.OrderByDescending(x => x.CreateTime)
.Select<FileVersionResponse>()
.ToListAsync();
}
public async Task<FileVersionResponse> GetLastByCodeAsync(string code)
{
return await _dbContext.Queryable<FileVersionEntity>()
.Where(x => x.Code == code)
.OrderByDescending(x => x.Version)
.Select<FileVersionResponse>()
.FirstAsync();
}
//************************************************************* help methods ***************************************************************
private async Task<int> GetLastVersionAsync(string code)
{
return await _dbContext.Queryable<FileVersionEntity>()
.Where(x => x.Code == code)
.OrderByDescending(x => x.Version)
.Select(x => x.Version)
.FirstAsync();
}
}

View File

@@ -0,0 +1,72 @@
using Dlhis.Basic.Common.FileOperation.Configurations;
using Kurisu.AspNetCore.Utils.Extensions;
using Microsoft.Extensions.Options;
using Minio;
using Minio.DataModel.Args;
namespace Dlhis.Basic.Common.FileOperation.Services.Implements;
public class MinioService : IMinioService
{
private readonly IMinioClient _client;
public MinioService(IMinioClient client, IOptions<MinIOOptions> options)
{
_client = client;
}
public async Task<bool> ExistsBucketAsync(string bucket)
{
var args = new BucketExistsArgs().WithBucket(bucket);
return await _client.BucketExistsAsync(args);
}
public async Task CreateBucketIfNotExistsAsync(string bucket)
{
if (!await ExistsBucketAsync(bucket))
{
var policy = "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"*\"]},\"Action\":[\"s3:GetBucketLocation\",\"s3:ListBucket\"],\"Resource\":[\"arn:aws:s3:::BUCKETNAME\"]},{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"*\"]},\"Action\":[\"s3:GetObject\"],\"Resource\":[\"arn:aws:s3:::BUCKETNAME/*\"]}]}".Replace("BUCKETNAME", bucket);
await _client.MakeBucketAsync(new MakeBucketArgs().WithBucket(bucket));
await _client.SetPolicyAsync(new SetPolicyArgs().WithBucket(bucket).WithPolicy(policy));
}
}
public async Task<bool> ExistsFileAsync(string bucket, string objectName)
{
try
{
var obj = new StatObjectArgs().WithBucket(bucket).WithObject(objectName);
var objStat = await _client.StatObjectAsync(obj);
}
catch (Exception)
{
return false;
}
return true;
}
public async Task<string> UploadFileAsync(string bucket, IFormFile formFile)
{
formFile.ThrowIfNull("请选择文件上传!");
await CreateBucketIfNotExistsAsync(bucket);
var ms = DateTime.Now.ToString("yyyyMMddHHmmssfff");
var fileName = Path.GetFileNameWithoutExtension(formFile.FileName) + "_" + ms + Path.GetExtension(formFile.FileName);
fileName = $"{DateTime.Now.Year}/{DateTime.Now.Month}/{fileName}";
var response = await _client.PutObjectAsync(new PutObjectArgs().WithBucket(bucket)
.WithObject(fileName)
.WithObjectSize(formFile.Length)
.WithStreamData(formFile.OpenReadStream())
.WithContentType(formFile.ContentType)
.WithVersionId(bucket)
);
return $"/{bucket}/{response.ObjectName}";
}
}

View File

@@ -0,0 +1,57 @@
using Dlhis.Basic.Common.Holiday.Requests;
using Dlhis.Basic.Common.Holiday.Responses;
using Dlhis.Basic.Common.Holiday.Services;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Common.Holiday.Controller;
[Authorize(Roles = "admin")]
[ApiController]
[Route("api/[controller]")]
public class HolidaysController : ControllerBase
{
private readonly IHolidayService _holidayService;
public HolidaysController(IHolidayService holidayService)
{
_holidayService = holidayService;
}
/// <summary>
/// 保存节假日信息。
/// </summary>
/// <param name="req">节假日请求参数。</param>
[HttpPost("save")]
public async Task SaveAsync(HolidayRequest req)
{
await _holidayService.SaveAsync(req);
}
/// <summary>
/// 获取所有节假日信息。
/// </summary>
/// <returns>节假日响应列表。</returns>
[HttpGet("list")]
public async Task<List<HolidayResponse>> GetAllHolidaysAsync()
{
return await _holidayService.GetAllHolidaysAsync();
}
/// <summary>
/// 删除指定ID的节假日信息。
/// </summary>
/// <param name="id">节假日ID。</param>
[HttpPost("delete/{id}")]
public async Task DeleteAsync(long id)
{
await _holidayService.DeleteAsync(id);
}
[AllowAnonymous]
[HttpGet("remote-ip")]
public string GetRemoteIp()
{
return HttpContext.Connection.RemoteIpAddress?.ToString();
}
}

View File

@@ -0,0 +1,35 @@
using System.ComponentModel.DataAnnotations;
using Dlhis.Entity.Basic.Enums;
namespace Dlhis.Basic.Common.Holiday.Requests;
public class HolidayRequest
{
public long? Id { get; set; }
/// <summary>
/// 年份
/// </summary>
public int Year { get; set; }
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 开始日期
/// </summary>
public DateOnly Start { get; set; }
/// <summary>
/// 结束日期
/// </summary>
public DateOnly End { get; set; }
/// <summary>
/// 节假日类型 HolidayEnumType
/// </summary>
[EnumDataType(typeof(HolidayEnumType))]
public HolidayEnumType Type { get; set; }
}

View File

@@ -0,0 +1,39 @@
using Dlhis.Entity.Basic.Enums;
using Kurisu.AspNetCore.Utils.Extensions;
namespace Dlhis.Basic.Common.Holiday.Responses;
public class HolidayResponse
{
public long Id { get; set; }
/// <summary>
/// 假日类型
/// </summary>
public HolidayEnumType Type { get; set; }
/// <summary>
/// 假日类型描述
/// </summary>
public string TypeDesc => Type.GetDescription();
/// <summary>
/// 年份
/// </summary>
public int Year { get; set; }
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 开始日期
/// </summary>
public DateOnly Start { get; set; }
/// <summary>
/// 结束日期
/// </summary>
public DateOnly End { get; set; }
}

View File

@@ -0,0 +1,28 @@
using Dlhis.Basic.Common.Holiday.Requests;
using Dlhis.Basic.Common.Holiday.Responses;
namespace Dlhis.Basic.Common.Holiday.Services;
/// <summary>
/// 节假日服务接口,定义节假日相关的操作。
/// </summary>
public interface IHolidayService : IScopeDependency
{
/// <summary>
/// 异步获取所有节假日信息。
/// </summary>
/// <returns>节假日响应列表。</returns>
Task<List<HolidayResponse>> GetAllHolidaysAsync();
/// <summary>
/// 异步保存节假日信息。
/// </summary>
/// <param name="req">节假日请求参数。</param>
Task SaveAsync(HolidayRequest req);
/// <summary>
/// 异步删除指定ID的节假日信息。
/// </summary>
/// <param name="id">节假日ID。</param>
Task DeleteAsync(long id);
}

View File

@@ -0,0 +1,57 @@
using Dlhis.Basic.Common.Holiday.Requests;
using Dlhis.Basic.Common.Holiday.Responses;
using Dlhis.Entity.Basic.Entity;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
using Kurisu.AspNetCore.Utils.Extensions;
using Mapster;
namespace Dlhis.Basic.Common.Holiday.Services.Implements;
public class HolidayService : IHolidayService
{
private readonly IDbContext _dbContext;
public HolidayService(IDbContext dbContext)
{
_dbContext = dbContext;
}
public async Task<List<HolidayResponse>> GetAllHolidaysAsync()
{
return await _dbContext.Queryable<HolidayEntity>()
.Select<HolidayResponse>()
.ToListAsync();
}
public async Task SaveAsync(HolidayRequest req)
{
var exists = await _dbContext.Queryable<HolidayEntity>()
.WhereIF(req.Id.HasValue, x => x.Id != req.Id)
.Where(x => x.Year == req.Year)
.Where(x => x.Start <= req.End && req.Start <= x.End)
.Where(x => x.Type != req.Type)
.AnyAsync();
exists.ThrowIfTrue("节假日时间冲突,请检查开始和结束时间,或节假日类型是否正确");
if (!req.Id.HasValue)
{
var holiday = req.Adapt<HolidayEntity>();
await _dbContext.InsertAsync(holiday);
}
else
{
var holiday = await _dbContext.Queryable<HolidayEntity>().SingleAsync(x => x.Id == req.Id);
holiday.ThrowIfNull("节假日数据不存在");
req.Adapt(holiday);
await _dbContext.UpdateAsync(holiday);
}
}
public async Task DeleteAsync(long id)
{
var holiday = await _dbContext.Queryable<HolidayEntity>().Where(x => x.Id == id).SingleAsync();
await _dbContext.DeleteReallyAsync(holiday);
}
}

View File

@@ -0,0 +1,37 @@
using Dlhis.Basic.Common.Message.Requests;
using Dlhis.Basic.Common.Message.Services;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Common.Message.Controller;
[Route("api/[controller]")]
[ApiController]
public class MessagesController : ControllerBase
{
private readonly IJinkoApiService _jinkoApiService;
public MessagesController(IJinkoApiService jinkoApiService)
{
_jinkoApiService = jinkoApiService;
}
[HttpPost("dingtalk/workmessage")]
public async Task SendWorkMessageAsync(DingTalkWorkMessageRequest request)
{
await _jinkoApiService.SendWorkMessageAsync(request);
}
[HttpPost("dingtalk/workgrid/workmessage")]
public async Task SendWorkMessageByWorkGridAsync(DingTalkWorkMessageRequest request)
{
await _jinkoApiService.SendWorkMessageByWorkGridAsync(request);
}
[HttpPost("dingtalk/messageurl")]
public async Task SendMessageUrlAsync(DingTalkMessageUrlRequest request)
{
await _jinkoApiService.SendMessageUrlAsync(request);
}
}

View File

@@ -0,0 +1,10 @@
namespace Dlhis.Basic.Common.Message.Requests;
public class DingTalkMessageUrlRequest
{
public string UserCode { get; set; }
public string Title { get; set; }
public string Text { get; set; }
public string PicUrl { get; set; }
public string MessageUrl { get; set; }
}

View File

@@ -0,0 +1,18 @@
using System.ComponentModel.DataAnnotations;
namespace Dlhis.Basic.Common.Message.Requests;
public class DingTalkWorkMessageRequest
{
/// <summary>
/// 工号
/// </summary>
[MinLength(1, ErrorMessage = "{0}不能为空")]
public List<string> WorkCodes { get; set; }
/// <summary>
/// 发送内容
/// </summary>
[Required(ErrorMessage = "{0}不能为空")]
public string Content { get; set; }
}

View File

@@ -0,0 +1,21 @@
namespace Dlhis.Basic.Common.Message.Responses
{
public class JinkoOaResponse<T>
{
public int Code { get; set; }
public string Message { get; set; }
public T Result { get; set; }
}
public class JinkoData<T>
{
public T Data { get; set; }
}
public class JinkoOaInfo
{
public int Id { get; set; }
public string Email { get; set; }
public string Lastname { get; set; }
}
}

View File

@@ -0,0 +1,11 @@
using Dlhis.Basic.Common.Message.Requests;
namespace Dlhis.Basic.Common.Message.Services;
public interface IJinkoApiService : ISingletonDependency
{
Task SendWorkMessageAsync(DingTalkWorkMessageRequest request);
Task SendWorkMessageByWorkGridAsync(DingTalkWorkMessageRequest request);
Task SendMessageUrlAsync(DingTalkMessageUrlRequest request);
}

View File

@@ -0,0 +1,156 @@
using System.Text;
using Dlhis.Basic.Common.ApiLog.Services;
using Dlhis.Basic.Common.Message.Requests;
using Dlhis.Basic.Common.Message.Responses;
using Dlhis.Entity.Common.Enums;
using Kurisu.AspNetCore.Utils.Extensions;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Dlhis.Basic.Common.Message.Services.Implements;
public class JinkoApiService : IJinkoApiService
{
private readonly IHttpClientFactory _httpClientFactory;
private readonly IServiceProvider _serviceProvider;
private const string _agentId = "2984453842";
private const string _appKey = "dingppvj6wvtgbagwpsw";
private const string _appSecret = "k9mxYwilZgQiuhV_RVYRueoIAWHCQWrUdhbj6DAmiEiqMzSQE4igt0kAj97rmLaS";
public JinkoApiService(IHttpClientFactory httpClientFactory, IServiceProvider serviceProvider)
{
_httpClientFactory = httpClientFactory;
_serviceProvider = serviceProvider;
}
public async Task SendWorkMessageAsync(DingTalkWorkMessageRequest request)
{
request.Content.IsEmpty().ThrowIfTrue("发送内容不能为空");
var users = await GetJinkoOaInfoByWorkCodes(request.WorkCodes);
var userIds = users.Select(x => x.Id).Join(",");
(userIds.Length > 100).ThrowIfTrue("超出消息接受人数,length > 100");
var body = new
{
agent_id = _agentId,
userid_list = userIds,
msg = new
{
msgtype = "text",
text = new
{
content = request.Content
}
}
}.ToJson();
await CommonRequestAsync(body);
}
public async Task SendWorkMessageByWorkGridAsync(DingTalkWorkMessageRequest request)
{
await SendWorkMessageAsync(request);
using var scope = _serviceProvider.CreateScope();
var ol = scope.ServiceProvider.GetService<IOperateLog>();
await ol.LogAsync(OperateLogType.WorkGrid, $"dingtalk消息推送:{request.ToJson()}");
}
public async Task SendMessageUrlAsync(DingTalkMessageUrlRequest request)
{
request.Title.IsEmpty().ThrowIfTrue("发送标题不能为空");
request.Text.IsEmpty().ThrowIfTrue("发送内容不能为空");
request.UserCode.IsEmpty().ThrowIfTrue("发送用户不能为空");
request.MessageUrl.IsEmpty().ThrowIfTrue("消息链接不能为空");
request.PicUrl.IsEmpty().ThrowIfTrue("图片链接不能为空");
var users = await GetJinkoOaInfoByWorkCodes(new List<string> { request.UserCode });
var userIds = users.Select(x => x.Id).Join(",");
var body = new
{
agent_id = _agentId,
userid_list = userIds,
msg = new
{
msgtype = "link",
link = new
{
messageUrl = request.MessageUrl,
picUrl = request.PicUrl,
title = request.Title,
text = request.Text
}
}
}.ToJson();
await CommonRequestAsync(body);
}
private async Task CommonRequestAsync(string body)
{
#if !DEBUG
var token = await GetTokenAsync();
var httpClient = _httpClientFactory.CreateClient("jinko.httpclient");
var url = $"/topapi/message/corpconversation/asyncsend_v2?access_token={token}";
var content = new StringContent(body, Encoding.UTF8, "application/json");
var response = await httpClient.PostAsync(url, content);
var jsonResponse = await response.Content.ReadAsStringAsync();
var jObject = JObject.Parse(jsonResponse);
(jObject.Value<string>("errcode") == "0").ThrowIfFalse(jObject.Value<string>("errmsg"));
#endif
}
private async Task<string> GetTokenAsync()
{
var token = string.Empty;
if (!token.IsEmpty())
{
return token;
}
var httpClient = _httpClientFactory.CreateClient("jinko.httpclient");
var form = new FormUrlEncodedContent(new Dictionary<string, string>
{
{ "appkey", _appKey },
{ "appsecret", _appSecret }
});
//eg: appkey=dingumelppews6rah7x9&appsecret=nsWfJTVjYesHVzrLiP-t1TQqMQvC1L_kZNfXfnIyzcXK4pCTfKprkjZcxAbsDR_l
var response = await httpClient.GetStringAsync($"/gettoken?{await form.ReadAsStringAsync()}");
var jObj = JObject.Parse(response);
(jObj.Value<string>("errcode") == "0").ThrowIfFalse(jObj.Value<string>("errmsg"));
token = jObj.Value<string>("access_token");
return token;
}
private async Task<List<JinkoOaInfo>> GetJinkoOaInfoByWorkCodes(List<string> codes)
{
var httpClient = _httpClientFactory.CreateClient("jinko.oa");
var body = new
{
token = "TTMlaplWIEjmJHiVShWybekyyNnJXDHD",
type = "workCode",
workCode = string.Join(",", codes)
}.ToJson();
var content = new StringContent(body, Encoding.UTF8, "application/json");
var response = await httpClient.PostAsync("http://oa.jinkosolar.com/api/commonRequestService/getUserByWorkCode/v2", content);
var responseJson = await response.Content.ReadAsStringAsync();
var oaInfo = JsonConvert.DeserializeObject<JinkoOaResponse<JinkoData<List<JinkoOaInfo>>>>(responseJson);
(oaInfo.Code == 200).ThrowIfFalse(oaInfo.Message);
return oaInfo.Result.Data;
}
}

View File

@@ -0,0 +1,50 @@
using Kurisu.AspNetCore.Startup;
namespace Dlhis.Basic.Common.Packs;
public class MessagePack : BaseAppPack
{
public override void ConfigureServices(IServiceCollection services)
{
services.AddHttpClient("jinko.oa", (_, _) => { })
.ConfigurePrimaryHttpMessageHandler(() =>
{
var handler = new HttpClientHandler
{
ClientCertificateOptions = ClientCertificateOption.Manual,
ServerCertificateCustomValidationCallback = (_, _, _, _) => true
};
return handler;
});
services.AddHttpClient("jinko.httpclient", (sp, httpClient) =>
{
// "BaseUrl": "https://oapi.dingtalk.com",
// "AgentId": "2768073678",
// "AppId": "dingumelppews6rah7x9",
// "AppSecret": "nsWfJTVjYesHVzrLiP-t1TQqMQvC1L_kZNfXfnIyzcXK4pCTfKprkjZcxAbsDR_l",
httpClient.BaseAddress = new Uri("https://oapi.dingtalk.com");
httpClient.Timeout = TimeSpan.FromSeconds(30);
})
// .SetHandlerLifetime(TimeSpan.FromMinutes(5))
// .addd((res) =>
// {
// return HttpPolicyExtensions
// .HandleTransientHttpError()
// .OrResult(msg => msg.StatusCode != HttpStatusCode.OK)
// .WaitAndRetryAsync(6, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)));
// })
.ConfigurePrimaryHttpMessageHandler(() =>
{
var handler = new HttpClientHandler
{
ClientCertificateOptions = ClientCertificateOption.Manual,
ServerCertificateCustomValidationCallback = (_, _, _, _) => true
};
return handler;
});
}
}

View File

@@ -0,0 +1,21 @@
using Dlhis.Basic.Common.FileOperation.Configurations;
using Kurisu.AspNetCore.Startup;
using Microsoft.Extensions.Options;
using Minio;
namespace Dlhis.Basic.Common.Packs;
public class MinioPack : BaseAppPack
{
public override void ConfigureServices(IServiceCollection services)
{
services.AddSingleton(sp =>
{
var config = sp.GetService<IOptions<MinIOOptions>>().Value;
return new MinioClient().WithEndpoint(new Uri(config.Endpoint))
.WithCredentials(config.AccessKey, config.SecretKey)
.Build();
});
}
}

View File

@@ -0,0 +1,31 @@
using Dlhis.Basic.Common.SysData.Request;
using Dlhis.Basic.Common.SysData.Services;
using Kurisu.AspNetCore.UnifyResultAndValidation.Aop;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Common.SysData.Controller;
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class MiddlesController : ControllerBase
{
private readonly IHealthCheckService _healthCheckService;
public MiddlesController(IHealthCheckService healthCheckService)
{
_healthCheckService = healthCheckService;
}
/// <summary>
/// 健康检查
/// </summary>
/// <param name="request"></param>
[DisableApiLog]
[HttpPost("healthz")]
public async Task CheckAsync(MiddleHealthCheckRequest request)
{
await _healthCheckService.CheckAsync(request.Factories);
}
}

View File

@@ -0,0 +1,26 @@
using Dlhis.Basic.Common.SysData.Services;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Common.SysData.Controller;
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class SysDataController : ControllerBase
{
private readonly ISysDataService _sysDataService;
public SysDataController(ISysDataService sysDataService)
{
_sysDataService = sysDataService;
}
[IgnoreTenant]
[HttpGet("download")]
public async Task<List<object>> DownloadAsync(string factory, string tableName)
{
return await _sysDataService.DownloadAsync(factory, tableName);
}
}

View File

@@ -0,0 +1,9 @@
using System.ComponentModel.DataAnnotations;
namespace Dlhis.Basic.Common.SysData.Request;
public class HealthCheckRequest
{
[MinLength(1)]
public List<string> Factories { get; set; }
}

View File

@@ -0,0 +1,6 @@
namespace Dlhis.Basic.Common.SysData.Request;
public class MiddleHealthCheckRequest
{
public List<string> Factories { get; set; }
}

View File

@@ -0,0 +1,6 @@
namespace Dlhis.Basic.Common.SysData.Services;
public interface IHealthCheckService : IScopeDependency
{
Task CheckAsync(List<string> factories);
}

View File

@@ -0,0 +1,6 @@
namespace Dlhis.Basic.Common.SysData.Services;
public interface ISysDataService : IScopeDependency
{
Task<List<object>> DownloadAsync(string factory, string tableName);
}

View File

@@ -0,0 +1,10 @@
namespace Dlhis.Basic.Common.SysData.Services.Implements;
public class HealthCheckService : IHealthCheckService
{
public async Task CheckAsync(List<string> factories)
{
//todo 状态显示
await Task.CompletedTask;
}
}

View File

@@ -0,0 +1,79 @@
using System.Reflection;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Basic.Enums;
using Dlhis.Entity.Canteen.Entities;
using Dlhis.Entity.Canteen.Enums;
using Kurisu.AspNetCore;
using Kurisu.AspNetCore.DataAccess.Entity;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
using SqlSugar;
namespace Dlhis.Basic.Common.SysData.Services.Implements;
public class SysDataService : ISysDataService
{
private readonly IDbContext _dbContext;
public SysDataService(IDbContext dbContext)
{
_dbContext = dbContext;
}
/// <inheritdoc />
public async Task<List<object>> DownloadAsync(string factory, string tableName)
{
var type = App.ActiveTypes
.Where(x => x.IsDefined(typeof(SugarTable), false))
.Where(x => !x.IsDefined(typeof(SkipScanAttribute), false))
.FirstOrDefault(x => x.GetCustomAttribute<SugarTable>()!.TableName == tableName);
var table = type?.GetCustomAttribute<SugarTable>()!.TableName;
var sql = $"select * from {table}";
if (type == null)
{
table = tableName;
}
else
{
if (type.IsAssignableTo(typeof(ITenantId)))
{
sql += $" where tenantId = '{factory}'";
}
}
switch (table)
{
case "Gainfo":
return await _dbContext.Queryable<GainfoEntity>().Where(x => x.Type == GainfoUserTypeEnumType.Normal || x.Type == GainfoUserTypeEnumType.SecurityWhite).Where(x => x.Factory == factory).Select(x => (object)x).ToListAsync();
case "GainfoMeal":
{
var r = await _dbContext.Queryable<GainfoEntity>()
.Where(x => x.Factory == factory)
.GroupBy(x => x.Code)
.Select(x => new
{
UserCode = x.Code,
Balance = SqlFunc.Subqueryable<BalanceRecordEntity>().Where(p => p.UserCode == x.Code)
.Where(p => !BalanceRecordSourceConstants.IgnoreSources.Contains(p.Source)
&& p.Status == BalanceRecordStatusEnumType.Valid
&& p.IsDeleted == false)
.Sum(p => p.Amount)
})
.ToListAsync();
return r.Select(x => (object)x).ToList();
}
default:
return await _dbContext.Client.SqlQueryable<object>(sql).ToListAsync();
}
}
public async Task<List<string>> GetWalletFactoriesAsync(string factory)
{
var wallets = await _dbContext.Queryable<WalletEntity>().ToListAsync();
var code = wallets.First(x => x.Factory == factory).Code;
return wallets.Where(x => x.Code == code).Select(x => x.Factory).ToList();
}
}

View File

@@ -0,0 +1,148 @@
using Dlhis.Basic.Utils;
using Dlhis.DataPermission.Model;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Device.Entities;
using Dlhis.Entity.Sys.Entities;
using Dlhis.Entity.Sys.Enums;
using Kurisu.AspNetCore.Authentication.Abstractions;
using Kurisu.AspNetCore.DataAccess.Entity;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Attributes;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
namespace Dlhis.Basic.DataPermissions;
public class GetDataPermissionService : IGetDataPermissions, ISingletonDependency
{
private readonly ICurrentUser _currentUser;
private readonly IServiceProvider _serviceProvider;
public GetDataPermissionService(ICurrentUser currentUser, IServiceProvider serviceProvider)
{
_currentUser = currentUser;
_serviceProvider = serviceProvider;
}
public Dictionary<string, List<Guid>> GetData<T>()
{
var dict = new Dictionary<string, List<Guid>>(2);
var currentRole = _currentUser.GetRole();
if (currentRole is "admin" or "tenant-admin")
{
return dict;
}
using var scope = _serviceProvider.CreateScope();
var db = scope.ServiceProvider.GetService<IDbContext>();
db.Ignore<ITenantId>(() =>
{
var userDataPermissions = db.Queryable<DataPermissionEntity>()
.Where(x => x.AssignValue == _currentUser.GetStringSubjectId())
.ToList();
var deviceCodeProperty = typeof(T)
.GetProperties()
.FirstOrDefault(x => x.IsDefined(typeof(DeviceCodeAttribute), false));
var deviceGroupCodeProperty = typeof(T)
.GetProperties()
.FirstOrDefault(x => x.IsDefined(typeof(DeviceGroupCodeAttribute), false));
var userGroupCodeProperty = typeof(T)
.GetProperties()
.FirstOrDefault(x => x.IsDefined(typeof(UserGroupCodeAttribute), false));
if (userGroupCodeProperty != null)
{
var userGroupCodes = userDataPermissions.Where(x => x.UniqueType == DataPermissionAssignmentEnumType.UserGroup).Select(x => x.UniqueValue).Distinct().ToList();
dict.Add(userGroupCodeProperty.Name, userGroupCodes);
}
else
{
var deviceCodes = new List<Guid>();
//先计算分组权限下的设备
var deviceGroupCodes = userDataPermissions.Where(x => x.UniqueType == DataPermissionAssignmentEnumType.Group).Select(x => x.UniqueValue).ToList();
if (deviceGroupCodes.Any())
{
var data = db.Queryable<DeviceGroupEntity>().ToList();
var myCodes = new List<Guid>();
foreach (Guid deviceGroupCode in deviceGroupCodes)
{
myCodes.AddRange(RecursionHelper.HandlerDeviceGroupNextCodes(deviceGroupCode, data));
}
myCodes = myCodes.Distinct().ToList();
if (deviceCodeProperty != null)
{
deviceCodes = db.Queryable<DeviceGroupRelationshipEntity>().Where(x => myCodes.Contains(x.GroupCode)).Select(x => x.DeviceCode).ToList();
}
}
if (deviceGroupCodeProperty != null)
{
dict.Add(deviceGroupCodeProperty.Name, deviceGroupCodes);
}
if (deviceCodeProperty != null)
{
var currentDeviceCodes = userDataPermissions.Where(x => x.UniqueType == DataPermissionAssignmentEnumType.Device).Select(x => x.UniqueValue).ToList();
deviceCodes.AddRange(currentDeviceCodes);
dict.Add(deviceCodeProperty.Name, deviceCodes.Distinct().ToList());
}
}
});
return dict;
}
}
public interface IDataPermissionService : IScopeDependency
{
(bool, List<Guid>) GetMyDeviceCodes();
(bool, List<Guid>) GetMyDeviceGroupCodes();
}
public class MyDataPermissionService : IDataPermissionService
{
private readonly IGetDataPermissions _getDataPermissions;
private readonly ICurrentUser _currentUser;
public MyDataPermissionService(IGetDataPermissions getDataPermissions, ICurrentUser currentUser)
{
_getDataPermissions = getDataPermissions;
_currentUser = currentUser;
}
/// <inheritdoc />
public (bool, List<Guid>) GetMyDeviceCodes()
{
var codes = new List<Guid>();
var hasAllPermission = _currentUser.GetRole() is "admin" or "tenant-admin";
if (!hasAllPermission)
{
codes = _getDataPermissions.GetData<DeviceEntity>().FirstOrDefault().Value ?? new List<Guid>();
}
return (!hasAllPermission, codes);
}
/// <inheritdoc />
public (bool, List<Guid>) GetMyDeviceGroupCodes()
{
var codes = new List<Guid>();
var hasAllPermission = _currentUser.GetRole() is "admin" or "tenant-admin";
if (!hasAllPermission)
{
codes = _getDataPermissions.GetData<DeviceGroupEntity>().FirstOrDefault().Value ?? new List<Guid>();
}
return (!hasAllPermission, codes);
}
}

View File

@@ -0,0 +1,88 @@
using System.ComponentModel.DataAnnotations;
using Dlhis.Basic.Device.Request;
using Dlhis.Basic.Device.Response;
using Dlhis.Basic.Device.Services;
using Dlhis.Entity.Device.Enums;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Device.Controllers;
/// <summary>
/// 设备分组
/// </summary>
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class DeviceGroupsController : ControllerBase
{
private readonly IDeviceGroupService _deviceGroupService;
public DeviceGroupsController(IDeviceGroupService deviceGroupService)
{
_deviceGroupService = deviceGroupService;
}
/// <summary>
/// 获取设备组树
/// </summary>
/// <param name="type">分组类型</param>
/// <returns></returns>
[HttpGet("tree")]
[IgnoreTenant]
[DataPermission]
public async Task<List<DeviceGroupTreeResponse>> GetTreeAsync(
[EnumDataType(typeof(DeviceTypeEnumType), ErrorMessage = "请选择正确的类型")]
DeviceTypeEnumType type)
{
return await _deviceGroupService.GetTreeAsync(type);
}
/// <summary>
/// 设备分组保存
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("save")]
[IgnoreTenant]
public async Task SaveAsync(DeviceGroupSaveRequest request)
{
await _deviceGroupService.SaveAsync(request);
}
/// <summary>
/// 获取分组下的设备
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[HttpGet("devices")]
[CrossTenant]
public async Task<List<DeviceUnderGroupResponse>> GetDevicesByGroupCodeAsync(Guid code)
{
return await _deviceGroupService.GetDevicesByGroupCodeAsync(code);
}
/// <summary>
/// 分配设备
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("assign")]
[Transactional]
[CrossTenant]
public async Task<DevicePermissionAssignResponse> AssignDevicesAsync(DeviceAssignRequest request)
{
return await _deviceGroupService.AssignDevicesAsync(request);
}
/// <summary>
/// 获取用于预约的设备组
/// </summary>
/// <returns></returns>
[HttpGet("type/appointment")]
public async Task<List<DeviceGroupResponse>> GetAppointmentGroupsAsync()
{
return await _deviceGroupService.GetAppointmentGroupsAsync();
}
}

View File

@@ -0,0 +1,74 @@
using Dlhis.Basic.Device.Request;
using Dlhis.Basic.Device.Response;
using Dlhis.Basic.Device.Services;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Device.Controllers;
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class DevicePermissionManuallyController : ControllerBase
{
private readonly IDevicePermissionManuallyService _devicePermissionService;
public DevicePermissionManuallyController(IDevicePermissionManuallyService devicePermissionService)
{
_devicePermissionService = devicePermissionService;
}
/// <summary>
/// 数据分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("page")]
[DataPermission]
public async Task<Pagination<DevicePermissionManuallyResponse>> GetPageAsync([FromQuery] DevicePermissionManuallyRequest request)
{
return await _devicePermissionService.GetPageAsync(request);
}
/// <summary>
/// 添加权限
/// </summary>
/// <param name="request"></param>
[HttpPost("add")]
[Transactional]
public async Task AddAsync(DevicePermissionManuallyAddRequest request)
{
await _devicePermissionService.AddAsync(request);
}
/// <summary>
/// 删除权限
/// </summary>
/// <param name="id"></param>
[HttpGet("{id:long}")]
[Transactional]
public async Task DeleteAsync(long id)
{
await _devicePermissionService.DeleteAsync(id);
}
/// <summary>
/// 删除权限
/// </summary>
/// <param name="ids"></param>
[HttpPost("batchDelete")]
[Transactional]
public async Task DeleteAsync(List<long> ids)
{
await _devicePermissionService.DeleteAsync(ids);
}
[HttpPost("{factory}/clear/{userCode}")]
[IgnoreTenant]
public async Task ClearAllDevicePermissions(string factory, string userCode)
{
await _devicePermissionService.ClearAllDevicePermissions(factory, userCode);
}
}

View File

@@ -0,0 +1,182 @@
using Dlhis.Basic.Device.Dtos;
using Dlhis.Basic.Device.Request;
using Dlhis.Basic.Device.Response;
using Dlhis.Basic.Device.Services;
using Dlhis.Basic.Organization.Dto;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Device.Controllers;
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class DevicePermissionsController : ControllerBase
{
private readonly IDevicePermissionService _devicePermissionService;
private readonly IDevicePermissionAnalyzeService _devicePermissionAnalyzeService;
public DevicePermissionsController(IDevicePermissionService devicePermissionService, IDevicePermissionAnalyzeService devicePermissionAnalyzeService)
{
_devicePermissionService = devicePermissionService;
_devicePermissionAnalyzeService = devicePermissionAnalyzeService;
}
/// <summary>
/// 分配权限
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("assign")]
[Transactional]
[DataPermission]
[CrossTenant]
public async Task<DevicePermissionAssignResponse> AssignAsync(DevicePermissionSaveRequest request)
{
return await _devicePermissionService.AssignAsync(request);
}
/// <summary>
/// 分配权限到设备
/// </summary>
/// <param name="request"></param>
[HttpPost("assign-unique")]
[Transactional]
[CrossTenant]
public async Task<DevicePermissionAssignResponse> AssignToUniqueAsync(DevicePermissionsAssignToDeviceRequest request)
{
return await _devicePermissionService.AssignToUniqueAsync(request);
}
// [AllowAnonymous]
// [HttpPost("assign-unique-import")]
// [Transactional]
// [IgnoreTenant]
// public async Task AssignToUniqueImportAsync(IFormFile file)
// {
// await _devicePermissionService.AssignToUniqueImportAsync(file);
// }
/// <summary>
/// 当前类型的权限分配
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("assignments")]
public async Task<List<Guid>> GetAssignmentsAsync([FromQuery] DeviceGetAssignmentsRequest request)
{
return await _devicePermissionAnalyzeService.GetAssignmentsAsync(request);
}
/// <summary>
/// 当前类型的权限分配
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("assignments-unique")]
public async Task<List<GainfoDto>> GetAssignmentUniqueAsync([FromQuery] DeviceGetAssignmentUniquesRequest request)
{
return await _devicePermissionAnalyzeService.GetAssignmentUniqueAsync(request);
}
/// <summary>
/// 获取设备下人员分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("gainfos/page")]
[CrossTenant]
public async Task<Pagination<DeviceGainfoResponse>> GetGainfoPageByDeviceAsync([FromQuery] DeviceWithGainfoRequest request)
{
return await _devicePermissionService.GetGainfoPageByDeviceAsync(request);
}
/// <summary>
/// 设备人员下发重置
/// </summary>
/// <param name="request"></param>
[HttpPost("gainfos/reset")]
[CrossTenant]
public async Task ResetGainfoPageByDeviceAsync(DeviceGainfoReset request)
{
await _devicePermissionService.ResetGainfoPageByDeviceAsync(request.Code, request.Search, request.UserType);
}
/// <summary>
/// 获取设备下所有人员
/// </summary>
/// <param name="deviceUniqueNo"></param>
[HttpGet("gainfo-all")]
[IgnoreTenant]
public async Task<List<string>> GetDeviceUserCodesAsync(string deviceUniqueNo)
{
return await _devicePermissionService.GetDeviceUserCodesAsync(deviceUniqueNo);
}
/// <summary>
/// 设备其他类型人员
/// </summary>
/// <param name="deviceUniqueNo"></param>
/// <returns></returns>
[HttpGet("gainfo/others")]
[IgnoreTenant]
public async Task<DeviceOtherUserCountResponse> ExternalAndManuallyUserNoAsync(string deviceUniqueNo)
{
return await _devicePermissionService.ExternalAndManuallyUserNoAsync(deviceUniqueNo);
}
[HttpGet("userPermissionCodes")]
[IgnoreTenant]
public async Task<List<Guid>> GetAssignDeviceCodesAsync(string userCode)
{
return await _devicePermissionService.GetUserDeviceCodesByNoOrCodeAsync(userCode);
}
[HttpPost("temp-userPermissionCodes")]
[IgnoreTenant]
public async Task<List<TempC>> GetAssignDeviceCodesAsync(List<string> userCodes)
{
return await _devicePermissionService.GetUserDeviceCodesByNoAsync(userCodes);
}
[HttpGet("test-userPermissionCodes")]
[IgnoreTenant]
public async Task<Dictionary<string, List<TenantAssignTypeDeviceCode>>> GetTestAssignDeviceCodesAsync(string userNo)
{
return await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(new List<string> { userNo });
}
[HttpGet("reset-visitors")]
[IgnoreTenant]
public async Task<int> ResetVisitorsByDeviceAsync(string deviceUniqueNo)
{
return await _devicePermissionService.ResetVisitorsByDeviceAsync(deviceUniqueNo);
}
[HttpGet("exceptUsers")]
[IgnoreTenant]
public async Task<List<string>> GetDeviceExceptUsersAsync(string deviceUniqueNo)
{
return await _devicePermissionService.GetDeviceExceptUsersAsync(deviceUniqueNo);
}
[HttpGet("notInDeviceUsers")]
[IgnoreTenant]
public async Task<List<string>> GetDeviceNotInUsersAsync(string deviceUniqueNo)
{
return await _devicePermissionService.GetDeviceNotInUsersAsync(deviceUniqueNo);
}
[HttpPost("removeExceptUsers")]
[Transactional]
[IgnoreTenant]
public async Task<int> GenerateDeleteDeviceTasksAsync(DeviceRemoveExceptUserRequest request)
{
return await _devicePermissionService.GenerateDeleteDeviceTasksAsync(request.DeviceUniqueNo);
}
}

Some files were not shown because too many files have changed in this diff Show More