diff --git a/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/RemoteUserService.java b/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/RemoteUserService.java index f37eb62f..374f9882 100644 --- a/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/RemoteUserService.java +++ b/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/RemoteUserService.java @@ -61,6 +61,6 @@ public interface RemoteUserService @PostMapping("/user/register") public R registerUserInfo(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); - @PutMapping("/user/register") + @PutMapping("/user") public R updateUserInfo(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); } diff --git a/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/domain/SysUser.java b/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/domain/SysUser.java index 6203b8d9..44fe0fae 100644 --- a/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/domain/SysUser.java +++ b/yanzhu-api/yanzhu-api-system/src/main/java/com/yanzhu/system/api/domain/SysUser.java @@ -105,6 +105,16 @@ public class SysUser extends BaseEntity @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT) private Date loginDate; + private String admitGuid; + + public String getAdmitGuid() { + return admitGuid; + } + + public void setAdmitGuid(String admitGuid) { + this.admitGuid = admitGuid; + } + /** 部门对象 */ @Excels({ @Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT), diff --git a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/constant/CacheConstants.java b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/constant/CacheConstants.java index 3dcc01c3..74c29b50 100644 --- a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/constant/CacheConstants.java +++ b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/constant/CacheConstants.java @@ -77,4 +77,6 @@ public class CacheConstants * 项目管理 cache key */ public static final String PRO_PROJECT = "pro_project:"; + + public static final String UNI_AUTH = "pro_project_uni_auth3:"; } diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/AttendanceCfg.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/AttendanceCfg.java new file mode 100644 index 00000000..1528e8a3 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/AttendanceCfg.java @@ -0,0 +1,167 @@ +package com.yanzhu.manage.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.yanzhu.common.core.annotation.Excel; +import com.yanzhu.common.core.web.domain.BaseEntity; +/** + * 考勤配置对象 attendance_cfg + * + * @author yanzhu + * @date 2024-10-08 + */ +public class AttendanceCfg extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private Long id; + + /** 公司主键 */ + @Excel(name = "公司主键") + private Long comId; + + /** 分包单位 */ + @Excel(name = "分包单位") + private Long projectId; + + /** 厂商编号(参考字典attendance_vendors) */ + @Excel(name = " 厂商编号(参考字典attendance_vendors)") + private String vendorsCode; + + /** 厂商参数 */ + @Excel(name = "厂商参数") + private String vendorsParameter; + + /** 1-启用,0-停用 */ + @Excel(name = "1-启用,0-停用") + private Long enabled; + + /** 状态 */ + @Excel(name = "状态") + private Long state; + + /** $column.columnComment */ + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + private Long isDel; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setComId(Long comId) + { + this.comId = comId; + } + + public Long getComId() + { + return comId; + } + public void setProjectId(Long projectId) + { + this.projectId = projectId; + } + + public Long getProjectId() + { + return projectId; + } + public void setVendorsCode(String vendorsCode) + { + this.vendorsCode = vendorsCode; + } + + public String getVendorsCode() + { + return vendorsCode; + } + public void setVendorsParameter(String vendorsParameter) + { + this.vendorsParameter = vendorsParameter; + } + + public String getVendorsParameter() + { + return vendorsParameter; + } + public void setEnabled(Long enabled) + { + this.enabled = enabled; + } + + public Long getEnabled() + { + return enabled; + } + public void setState(Long state) + { + this.state = state; + } + + public Long getState() + { + return state; + } + public void setIsDel(Long isDel) + { + this.isDel = isDel; + } + + public Long getIsDel() + { + return isDel; + } + + private String compName; + private String projectName; + private String vendorsName; + public String getProjectName() { + return projectName; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } + + public String getVendorsName() { + return vendorsName; + } + + public void setVendorsName(String vendorsName) { + this.vendorsName = vendorsName; + } + + public String getCompName() { + return compName; + } + + public void setCompName(String compName) { + this.compName = compName; + } + + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("comId", getComId()) + .append("projectId", getProjectId()) + .append("vendorsCode", getVendorsCode()) + .append("vendorsParameter", getVendorsParameter()) + .append("enabled", getEnabled()) + .append("state", getState()) + .append("remark", getRemark()) + .append("isDel", getIsDel()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/AttendanceUbiData.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/AttendanceUbiData.java new file mode 100644 index 00000000..1bfd4f42 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/AttendanceUbiData.java @@ -0,0 +1,285 @@ +package com.yanzhu.manage.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.yanzhu.common.core.annotation.Excel; +import com.yanzhu.common.core.web.domain.BaseEntity; + +import java.util.Date; + +/** + * 考勤管理对象 attendance_ubi_data + * + * @author yanzhu + * @date 2024-10-12 + */ +public class AttendanceUbiData extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** $column.columnComment */ + private Long id; + + /** 公司ID */ + @Excel(name = "公司ID") + private Long comId; + + /** 项目ID */ + @Excel(name = "项目ID") + private Long projectId; + + /** 用户ID */ + @Excel(name = "用户ID") + private Long userId; + + /** $column.columnComment */ + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + private String userName; + + /** 班组编号(外键) */ + @Excel(name = "班组编号(外键)") + private Long subDeptGroup; + + /** 班组名称 */ + @Excel(name = "班组名称") + private String subDeptGroupName; + + /** 工种类型 */ + @Excel(name = "工种类型") + private String craftType; + + /** 工种岗位 */ + @Excel(name = "工种岗位") + private String craftPost; + + /** 进场时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "进场时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date inTime; + + /** 进场数据 */ + @Excel(name = "进场数据") + private String inData; + + /** 离场时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "离场时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date outTime; + + /** 离场数据 */ + @Excel(name = "离场数据") + private String outData; + + /** 设备NO */ + @Excel(name = "设备NO") + private String deviceNo; + + /** $column.columnComment */ + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + private Long isDel; + + /** $column.columnComment */ + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + private Long state; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setComId(Long comId) + { + this.comId = comId; + } + + public Long getComId() + { + return comId; + } + public void setProjectId(Long projectId) + { + this.projectId = projectId; + } + + public Long getProjectId() + { + return projectId; + } + public void setUserId(Long userId) + { + this.userId = userId; + } + + public Long getUserId() + { + return userId; + } + public void setUserName(String userName) + { + this.userName = userName; + } + + public String getUserName() + { + return userName; + } + public void setSubDeptGroup(Long subDeptGroup) + { + this.subDeptGroup = subDeptGroup; + } + + public Long getSubDeptGroup() + { + return subDeptGroup; + } + public void setSubDeptGroupName(String subDeptGroupName) + { + this.subDeptGroupName = subDeptGroupName; + } + + public String getSubDeptGroupName() + { + return subDeptGroupName; + } + public void setCraftType(String craftType) + { + this.craftType = craftType; + } + + public String getCraftType() + { + return craftType; + } + public void setCraftPost(String craftPost) + { + this.craftPost = craftPost; + } + + public String getCraftPost() + { + return craftPost; + } + public void setInTime(Date inTime) + { + this.inTime = inTime; + } + + public Date getInTime() + { + return inTime; + } + public void setInData(String inData) + { + this.inData = inData; + } + + public String getInData() + { + return inData; + } + public void setOutTime(Date outTime) + { + this.outTime = outTime; + } + + public Date getOutTime() + { + return outTime; + } + public void setOutData(String outData) + { + this.outData = outData; + } + + public String getOutData() + { + return outData; + } + public void setDeviceNo(String deviceNo) + { + this.deviceNo = deviceNo; + } + + public String getDeviceNo() + { + return deviceNo; + } + public void setIsDel(Long isDel) + { + this.isDel = isDel; + } + + public Long getIsDel() + { + return isDel; + } + public void setState(Long state) + { + this.state = state; + } + + public Long getState() + { + return state; + } + + private String eventGuid; + private String inPhoto; + private String outPhoto; + public String getEventGuid() { + return eventGuid; + } + + public void setEventGuid(String eventGuid) { + this.eventGuid = eventGuid; + } + + public String getInPhoto() { + return inPhoto; + } + + public void setInPhoto(String inPhoto) { + this.inPhoto = inPhoto; + } + + public String getOutPhoto() { + return outPhoto; + } + + public void setOutPhoto(String outPhoto) { + this.outPhoto = outPhoto; + } + + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("comId", getComId()) + .append("projectId", getProjectId()) + .append("userId", getUserId()) + .append("userName", getUserName()) + .append("subDeptGroup", getSubDeptGroup()) + .append("subDeptGroupName", getSubDeptGroupName()) + .append("craftType", getCraftType()) + .append("craftPost", getCraftPost()) + .append("inTime", getInTime()) + .append("inData", getInData()) + .append("outTime", getOutTime()) + .append("outData", getOutData()) + .append("deviceNo", getDeviceNo()) + .append("isDel", getIsDel()) + .append("state", getState()) + .append("remark", getRemark()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/AttendanceUbiDevice.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/AttendanceUbiDevice.java new file mode 100644 index 00000000..60ec2233 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/AttendanceUbiDevice.java @@ -0,0 +1,353 @@ +package com.yanzhu.manage.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.yanzhu.common.core.annotation.Excel; +import com.yanzhu.common.core.web.domain.BaseEntity; +/** + * 宇泛的设备信息对象 attendance_ubi_device + * + * @author yanzhu + * @date 2024-10-08 + */ +public class AttendanceUbiDevice extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** $column.columnComment */ + private Long id; + + /** 公司主键 */ + @Excel(name = "公司主键") + private Long comId; + + /** 分包单位 */ + @Excel(name = "分包单位") + private Long projectId; + + /** 设备名称 */ + @Excel(name = "设备名称") + private String name; + + /** 设备标签 */ + @Excel(name = "设备标签") + private String tag; + + /** 场景 Guid */ + @Excel(name = "场景 Guid") + private String sceneGuid; + + /** 设备来源,字典ubi_device_source */ + @Excel(name = "设备来源,字典ubi_device_source") + private String source; + + /** 设备序列号 */ + @Excel(name = "设备序列号") + private String deviceNo; + + /** 扩展字段(uface 设备(recType 设备的识别方式, 默认为 1) */ + @Excel(name = "扩展字段", readConverterExp = "u=face,设=备(recType,设=备的识别方式,,默=认为,1=") + private String addition; + + /** 是否绑定默认场景(场景 Guid 为空此字段生效) */ + @Excel(name = "是否绑定默认场景", readConverterExp = "场=景,G=uid,为=空此字段生效") + private Integer bindDefaultScene; + + /** 是否清空设备数据,默认为false */ + @Excel(name = "是否清空设备数据,默认为false") + private Integer forceEmptyDevice; + + /** 当forceEmptyDevice为true,传入设备密码 */ + @Excel(name = "当forceEmptyDevice为true,传入设备密码") + private String password; + + /** 设备模式 */ + @Excel(name = "设备模式") + private String deviceModel; + + /** 设备状态 */ + @Excel(name = "设备状态") + private Long deviceState; + + /** 比对模式,1:本地识别 2:云端识别 */ + @Excel(name = "比对模式,1:本地识别 2:云端识别") + private Long recType; + + /** 在线状态 */ + @Excel(name = "在线状态") + private Long onlineState; + + /** 版本号 */ + @Excel(name = "版本号") + private String versionNo; + + /** 最后激活时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "最后激活时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date lastActiveTime; + + /** 是否已注册 */ + @Excel(name = "是否已注册") + private Long hasRegister; + + /** 状态 */ + @Excel(name = "状态") + private Long state; + + /** $column.columnComment */ + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + private Long isDel; + + private String compName; + private String projectName; + + public String getCompName() { + return compName; + } + + public void setCompName(String compName) { + this.compName = compName; + } + + public String getProjectName() { + return projectName; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } + + public String getSouceName() { + return souceName; + } + + public void setSouceName(String souceName) { + this.souceName = souceName; + } + + private String souceName; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setComId(Long comId) + { + this.comId = comId; + } + + public Long getComId() + { + return comId; + } + public void setProjectId(Long projectId) + { + this.projectId = projectId; + } + + public Long getProjectId() + { + return projectId; + } + public void setName(String name) + { + this.name = name; + } + + public String getName() + { + return name; + } + public void setTag(String tag) + { + this.tag = tag; + } + + public String getTag() + { + return tag; + } + public void setSceneGuid(String sceneGuid) + { + this.sceneGuid = sceneGuid; + } + + public String getSceneGuid() + { + return sceneGuid; + } + public void setSource(String source) + { + this.source = source; + } + + public String getSource() + { + return source; + } + public void setDeviceNo(String deviceNo) + { + this.deviceNo = deviceNo; + } + + public String getDeviceNo() + { + return deviceNo; + } + public void setAddition(String addition) + { + this.addition = addition; + } + + public String getAddition() + { + return addition; + } + public void setBindDefaultScene(Integer bindDefaultScene) + { + this.bindDefaultScene = bindDefaultScene; + } + + public Integer getBindDefaultScene() + { + return bindDefaultScene; + } + public void setForceEmptyDevice(Integer forceEmptyDevice) + { + this.forceEmptyDevice = forceEmptyDevice; + } + + public Integer getForceEmptyDevice() + { + return forceEmptyDevice; + } + public void setPassword(String password) + { + this.password = password; + } + + public String getPassword() + { + return password; + } + public void setDeviceModel(String deviceModel) + { + this.deviceModel = deviceModel; + } + + public String getDeviceModel() + { + return deviceModel; + } + public void setDeviceState(Long deviceState) + { + this.deviceState = deviceState; + } + + public Long getDeviceState() + { + return deviceState; + } + public void setRecType(Long recType) + { + this.recType = recType; + } + + public Long getRecType() + { + return recType; + } + public void setOnlineState(Long onlineState) + { + this.onlineState = onlineState; + } + + public Long getOnlineState() + { + return onlineState; + } + public void setVersionNo(String versionNo) + { + this.versionNo = versionNo; + } + + public String getVersionNo() + { + return versionNo; + } + public void setLastActiveTime(Date lastActiveTime) + { + this.lastActiveTime = lastActiveTime; + } + + public Date getLastActiveTime() + { + return lastActiveTime; + } + public void setHasRegister(Long hasRegister) + { + this.hasRegister = hasRegister; + } + + public Long getHasRegister() + { + return hasRegister; + } + public void setState(Long state) + { + this.state = state; + } + + public Long getState() + { + return state; + } + public void setIsDel(Long isDel) + { + this.isDel = isDel; + } + + public Long getIsDel() + { + return isDel; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("comId", getComId()) + .append("projectId", getProjectId()) + .append("name", getName()) + .append("tag", getTag()) + .append("sceneGuid", getSceneGuid()) + .append("source", getSource()) + .append("deviceNo", getDeviceNo()) + .append("addition", getAddition()) + .append("bindDefaultScene", getBindDefaultScene()) + .append("forceEmptyDevice", getForceEmptyDevice()) + .append("password", getPassword()) + .append("deviceModel", getDeviceModel()) + .append("deviceState", getDeviceState()) + .append("recType", getRecType()) + .append("onlineState", getOnlineState()) + .append("versionNo", getVersionNo()) + .append("lastActiveTime", getLastActiveTime()) + .append("hasRegister", getHasRegister()) + .append("state", getState()) + .append("remark", getRemark()) + .append("isDel", getIsDel()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/AttendanceCfgMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/AttendanceCfgMapper.java new file mode 100644 index 00000000..b257d4f0 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/AttendanceCfgMapper.java @@ -0,0 +1,61 @@ +package com.yanzhu.manage.mapper; + +import java.util.List; +import com.yanzhu.manage.domain.AttendanceCfg; + +/** + * 考勤配置Mapper接口 + * + * @author yanzhu + * @date 2024-10-08 + */ +public interface AttendanceCfgMapper +{ + /** + * 查询考勤配置 + * + * @param id 考勤配置主键 + * @return 考勤配置 + */ + public AttendanceCfg selectAttendanceCfgById(Long id); + + /** + * 查询考勤配置列表 + * + * @param attendanceCfg 考勤配置 + * @return 考勤配置集合 + */ + public List selectAttendanceCfgList(AttendanceCfg attendanceCfg); + + /** + * 新增考勤配置 + * + * @param attendanceCfg 考勤配置 + * @return 结果 + */ + public int insertAttendanceCfg(AttendanceCfg attendanceCfg); + + /** + * 修改考勤配置 + * + * @param attendanceCfg 考勤配置 + * @return 结果 + */ + public int updateAttendanceCfg(AttendanceCfg attendanceCfg); + + /** + * 删除考勤配置 + * + * @param id 考勤配置主键 + * @return 结果 + */ + public int deleteAttendanceCfgById(Long id); + + /** + * 批量删除考勤配置 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteAttendanceCfgByIds(Long[] ids); +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/AttendanceUbiDataMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/AttendanceUbiDataMapper.java new file mode 100644 index 00000000..9551a062 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/AttendanceUbiDataMapper.java @@ -0,0 +1,61 @@ +package com.yanzhu.manage.mapper; + +import java.util.List; +import com.yanzhu.manage.domain.AttendanceUbiData; + +/** + * 考勤管理Mapper接口 + * + * @author yanzhu + * @date 2024-10-12 + */ +public interface AttendanceUbiDataMapper +{ + /** + * 查询考勤管理 + * + * @param id 考勤管理主键 + * @return 考勤管理 + */ + public AttendanceUbiData selectAttendanceUbiDataById(Long id); + + /** + * 查询考勤管理列表 + * + * @param attendanceUbiData 考勤管理 + * @return 考勤管理集合 + */ + public List selectAttendanceUbiDataList(AttendanceUbiData attendanceUbiData); + + /** + * 新增考勤管理 + * + * @param attendanceUbiData 考勤管理 + * @return 结果 + */ + public int insertAttendanceUbiData(AttendanceUbiData attendanceUbiData); + + /** + * 修改考勤管理 + * + * @param attendanceUbiData 考勤管理 + * @return 结果 + */ + public int updateAttendanceUbiData(AttendanceUbiData attendanceUbiData); + + /** + * 删除考勤管理 + * + * @param id 考勤管理主键 + * @return 结果 + */ + public int deleteAttendanceUbiDataById(Long id); + + /** + * 批量删除考勤管理 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteAttendanceUbiDataByIds(Long[] ids); +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/AttendanceUbiDeviceMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/AttendanceUbiDeviceMapper.java new file mode 100644 index 00000000..747bcfd9 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/AttendanceUbiDeviceMapper.java @@ -0,0 +1,61 @@ +package com.yanzhu.manage.mapper; + +import java.util.List; +import com.yanzhu.manage.domain.AttendanceUbiDevice; + +/** + * 宇泛的设备信息Mapper接口 + * + * @author yanzhu + * @date 2024-10-08 + */ +public interface AttendanceUbiDeviceMapper +{ + /** + * 查询宇泛的设备信息 + * + * @param id 宇泛的设备信息主键 + * @return 宇泛的设备信息 + */ + public AttendanceUbiDevice selectAttendanceUbiDeviceById(Long id); + + /** + * 查询宇泛的设备信息列表 + * + * @param attendanceUbiDevice 宇泛的设备信息 + * @return 宇泛的设备信息集合 + */ + public List selectAttendanceUbiDeviceList(AttendanceUbiDevice attendanceUbiDevice); + + /** + * 新增宇泛的设备信息 + * + * @param attendanceUbiDevice 宇泛的设备信息 + * @return 结果 + */ + public int insertAttendanceUbiDevice(AttendanceUbiDevice attendanceUbiDevice); + + /** + * 修改宇泛的设备信息 + * + * @param attendanceUbiDevice 宇泛的设备信息 + * @return 结果 + */ + public int updateAttendanceUbiDevice(AttendanceUbiDevice attendanceUbiDevice); + + /** + * 删除宇泛的设备信息 + * + * @param id 宇泛的设备信息主键 + * @return 结果 + */ + public int deleteAttendanceUbiDeviceById(Long id); + + /** + * 批量删除宇泛的设备信息 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteAttendanceUbiDeviceByIds(Long[] ids); +} diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/AttendanceCfgMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/AttendanceCfgMapper.xml new file mode 100644 index 00000000..3fbb41d8 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/AttendanceCfgMapper.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + SELECT ac.id, ac.com_id, ac.project_id, ac.vendors_code, ac.vendors_parameter, ac.enabled, ac.state, ac.remark, ac.is_del, ac.create_by, ac.create_time, ac.update_by + , ac.update_time,dp.`dept_name` comp_name,pp.`project_name`,dic.`dict_label` vendors_name + FROM attendance_cfg ac + LEFT JOIN sys_dept dp ON ac.`com_id`=dp.`dept_id` + LEFT JOIN pro_project_info pp ON ac.`project_id`=pp.`id` + LEFT JOIN sys_dict_data dic ON ac.`vendors_code`=dic.`dict_value` AND dic.`dict_type`='attendance_vendors' + + + + + + + + insert into attendance_cfg + + com_id, + project_id, + vendors_code, + vendors_parameter, + enabled, + state, + remark, + is_del, + create_by, + create_time, + update_by, + update_time, + + + #{comId}, + #{projectId}, + #{vendorsCode}, + #{vendorsParameter}, + #{enabled}, + #{state}, + #{remark}, + #{isDel}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update attendance_cfg + + com_id = #{comId}, + project_id = #{projectId}, + vendors_code = #{vendorsCode}, + vendors_parameter = #{vendorsParameter}, + enabled = #{enabled}, + state = #{state}, + remark = #{remark}, + is_del = #{isDel}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from attendance_cfg where id = #{id} + + + + delete from attendance_cfg where id in + + #{id} + + + \ No newline at end of file diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/AttendanceUbiDataMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/AttendanceUbiDataMapper.xml new file mode 100644 index 00000000..8b375e4e --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/AttendanceUbiDataMapper.xml @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, comId, projectId, userId, userName, sub_dept_group, sub_dept_group_name, craft_type, craft_post, + eventGuid,inPhoto,outPhoto, + inTime, inData, outTime, outData, deviceNo, is_del, state, remark, create_by, create_time, update_by, update_time from attendance_ubi_data + + + + + + + + insert into attendance_ubi_data + + comId, + projectId, + userId, + userName, + sub_dept_group, + sub_dept_group_name, + craft_type, + craft_post, + inTime, + inData, + outTime, + outData, + deviceNo, + is_del, + eventGuid, + inPhoto, + outPhoto, + state, + remark, + create_by, + create_time, + update_by, + update_time, + + + #{comId}, + #{projectId}, + #{userId}, + #{userName}, + #{subDeptGroup}, + #{subDeptGroupName}, + #{craftType}, + #{craftPost}, + #{inTime}, + #{inData}, + #{outTime}, + #{outData}, + #{deviceNo}, + #{isDel}, + #{eventGuid}, + #{inPhoto}, + #{outPhoto}, + #{state}, + #{remark}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update attendance_ubi_data + + comId = #{comId}, + projectId = #{projectId}, + userId = #{userId}, + userName = #{userName}, + sub_dept_group = #{subDeptGroup}, + sub_dept_group_name = #{subDeptGroupName}, + craft_type = #{craftType}, + craft_post = #{craftPost}, + inTime = #{inTime}, + inData = #{inData}, + outTime = #{outTime}, + outData = #{outData}, + deviceNo = #{deviceNo}, + is_del = #{isDel}, + is_del = #{eventGuid}, + is_del = #{inPhoto}, + is_del = #{outPhoto}, + state = #{state}, + remark = #{remark}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from attendance_ubi_data where id = #{id} + + + + delete from attendance_ubi_data where id in + + #{id} + + + \ No newline at end of file diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/AttendanceUbiDeviceMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/AttendanceUbiDeviceMapper.xml new file mode 100644 index 00000000..476a9a27 --- /dev/null +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/AttendanceUbiDeviceMapper.xml @@ -0,0 +1,181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select ud.id, ud.com_id, ud.project_id, ud.name, ud.tag, ud.scene_guid, ud.source, ud.device_no, ud.addition, ud.bind_default_scene, ud.force_empty_device, + ud.device_model, ud.device_state, ud.rec_type, ud.online_state, ud.version_no, ud.last_active_time, ud.has_register, ud.state, ud.remark, ud.is_del, + ud.create_by, ud.create_time, ud.update_by, ud.update_time ,dp.`dept_name` comp_name,pp.`project_name`,dic.`dict_label` souce_name + from attendance_ubi_device ud + left join sys_dept dp on ud.`com_id`=dp.`dept_id` + left join pro_project_info pp on ud.`project_id`=pp.`id` + left join sys_dict_data dic on ud.`source`=dic.`dict_value` and dic.`dict_type`='ubi_device_source' + + + + + + + + insert into attendance_ubi_device + + id, + com_id, + project_id, + name, + tag, + scene_guid, + source, + device_no, + addition, + bind_default_scene, + force_empty_device, + password, + device_model, + device_state, + rec_type, + online_state, + version_no, + last_active_time, + has_register, + state, + remark, + is_del, + create_by, + create_time, + update_by, + update_time, + + + #{id}, + #{comId}, + #{projectId}, + #{name}, + #{tag}, + #{sceneGuid}, + #{source}, + #{deviceNo}, + #{addition}, + #{bindDefaultScene}, + #{forceEmptyDevice}, + #{password}, + #{deviceModel}, + #{deviceState}, + #{recType}, + #{onlineState}, + #{versionNo}, + #{lastActiveTime}, + #{hasRegister}, + #{state}, + #{remark}, + #{isDel}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update attendance_ubi_device + + com_id = #{comId}, + project_id = #{projectId}, + name = #{name}, + tag = #{tag}, + scene_guid = #{sceneGuid}, + source = #{source}, + device_no = #{deviceNo}, + addition = #{addition}, + bind_default_scene = #{bindDefaultScene}, + force_empty_device = #{forceEmptyDevice}, + password = #{password}, + device_model = #{deviceModel}, + device_state = #{deviceState}, + rec_type = #{recType}, + online_state = #{onlineState}, + version_no = #{versionNo}, + last_active_time = #{lastActiveTime}, + has_register = #{hasRegister}, + state = #{state}, + remark = #{remark}, + is_del = #{isDel}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from attendance_ubi_device where id = #{id} + + + + delete from attendance_ubi_device where id in + + #{id} + + + \ No newline at end of file diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProProjectInfoSubdeptsUsersMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProProjectInfoSubdeptsUsersMapper.xml index c232bc2a..d9bc292f 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProProjectInfoSubdeptsUsersMapper.xml +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProProjectInfoSubdeptsUsersMapper.xml @@ -32,50 +32,71 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + + + + + + + + + + + + + + + + + + + + + - - select pi.project_name, - psu.id, psu.com_id, psu.project_id, psu.sub_dept_id, psu.sub_dept_type, psu.sub_dept_name, psu.user_id, - psu.sub_dept_group, psu.sub_dept_group_name, psu.craft_type, psu.craft_post, psu.edu_status, - psu.edu_file_path, psu.edu_sign_path, psu.edu_date, psu.approve_status, psu.use_status, psu.sub_step, psu.illness_status, - psu.sup_illness_status, psu.is_del, psu.create_by, psu.create_time, psu.update_by, psu.update_time, psu.remark - from pro_project_info_subdepts_users psu - left join pro_project_info pi on pi.id = psu.project_id - left join sys_dept sd on sd.dept_id = pi.com_id + SELECT pi.project_name, psu.id, psu.com_id, psu.project_id, psu.sub_dept_id, psu.sub_dept_type, psu.sub_dept_name, psu.user_id, psu.sub_dept_group, + psu.sub_dept_group_name, psu.craft_type, psu.craft_post, psu.edu_status, psu.edu_file_path, psu.edu_sign_path, psu.edu_date, psu.approve_status, + psu.use_status, psu.sub_step, psu.illness_status, psu.sup_illness_status, psu.is_del, psu.create_by, psu.create_time, psu.update_by, psu.update_time, + psu.remark,su.`user_name`,su.`nick_name`,su.`user_type`,su.`card_type`,su.`card_code`, + su.`user_picture`, su.`card_img_inv`,su.`card_img_pos`,su.`user_infos`,su.`email`,su.`phonenumber`,su.`sex`,su.`avatar`,su.`login_ip`,su.`login_date` + FROM pro_project_info_subdepts_users psu + LEFT JOIN sys_user su ON psu.user_id=su.user_id + LEFT JOIN pro_project_info PI ON pi.id = psu.project_id + LEFT JOIN sys_dept sd ON sd.dept_id = pi.com_id + diff --git a/yanzhu-modules/yanzhu-manage/pom.xml b/yanzhu-modules/yanzhu-manage/pom.xml index 66c7ca47..de15c674 100644 --- a/yanzhu-modules/yanzhu-manage/pom.xml +++ b/yanzhu-modules/yanzhu-manage/pom.xml @@ -83,6 +83,12 @@ provided + + com.squareup.okhttp3 + okhttp + 4.9.3 + + com.yanzhu diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/AttendanceCfgController.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/AttendanceCfgController.java new file mode 100644 index 00000000..c5b25644 --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/AttendanceCfgController.java @@ -0,0 +1,99 @@ +package com.yanzhu.manage.controller; + +import com.yanzhu.common.core.utils.poi.ExcelUtil; +import com.yanzhu.common.core.web.controller.BaseController; +import com.yanzhu.common.core.web.domain.AjaxResult; +import com.yanzhu.common.core.web.page.TableDataInfo; +import com.yanzhu.common.log.annotation.Log; +import com.yanzhu.common.log.enums.BusinessType; +import com.yanzhu.common.security.annotation.RequiresPermissions; +import com.yanzhu.manage.domain.AttendanceCfg; +import com.yanzhu.manage.domain.BusExamInfo; +import com.yanzhu.manage.service.IAttendanceCfgService; +import com.yanzhu.manage.service.IBusExamInfoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; +/** + * 考勤配置Controller + * + * @author yanzhu + * @date 2024-10-08 + */ +@RestController +@RequestMapping("/attendance_cfg") +public class AttendanceCfgController extends BaseController +{ + @Autowired + private IAttendanceCfgService attendanceCfgService; + + /** + * 查询考勤配置列表 + */ + @RequiresPermissions("manage:attendance_cfg:list") + @GetMapping("/list") + public TableDataInfo list(AttendanceCfg attendanceCfg) + { + startPage(); + List list = attendanceCfgService.selectAttendanceCfgList(attendanceCfg); + return getDataTable(list); + } + + /** + * 导出考勤配置列表 + */ + @RequiresPermissions("manage:attendance_cfg:export") + @Log(title = "考勤配置", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, AttendanceCfg attendanceCfg) + { + List list = attendanceCfgService.selectAttendanceCfgList(attendanceCfg); + ExcelUtil util = new ExcelUtil(AttendanceCfg.class); + util.exportExcel(response, list, "考勤配置数据"); + } + + /** + * 获取考勤配置详细信息 + */ + @RequiresPermissions("manage:attendance_cfg:query") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(attendanceCfgService.selectAttendanceCfgById(id)); + } + + /** + * 新增考勤配置 + */ + @RequiresPermissions("manage:attendance_cfg:add") + @Log(title = "考勤配置", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody AttendanceCfg attendanceCfg) + { + return toAjax(attendanceCfgService.insertAttendanceCfg(attendanceCfg)); + } + + /** + * 修改考勤配置 + */ + @RequiresPermissions("manage:attendance_cfg:edit") + @Log(title = "考勤配置", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody AttendanceCfg attendanceCfg) + { + return toAjax(attendanceCfgService.updateAttendanceCfg(attendanceCfg)); + } + + /** + * 删除考勤配置 + */ + @RequiresPermissions("manage:attendance_cfg:remove") + @Log(title = "考勤配置", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(attendanceCfgService.deleteAttendanceCfgByIds(ids)); + } +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/AttendanceUbiDataController.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/AttendanceUbiDataController.java new file mode 100644 index 00000000..a0a33f24 --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/AttendanceUbiDataController.java @@ -0,0 +1,98 @@ +package com.yanzhu.manage.controller; + +import com.yanzhu.common.core.utils.poi.ExcelUtil; +import com.yanzhu.common.core.web.controller.BaseController; +import com.yanzhu.common.core.web.domain.AjaxResult; +import com.yanzhu.common.core.web.page.TableDataInfo; +import com.yanzhu.common.log.annotation.Log; +import com.yanzhu.common.log.enums.BusinessType; +import com.yanzhu.common.security.annotation.RequiresPermissions; +import com.yanzhu.manage.domain.AttendanceUbiData; +import com.yanzhu.manage.service.IAttendanceUbiDataService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 考勤管理Controller + * + * @author yanzhu + * @date 2024-10-12 + */ +@RestController +@RequestMapping("/attendanceUbiData") +public class AttendanceUbiDataController extends BaseController +{ + @Autowired + private IAttendanceUbiDataService attendanceUbiDataService; + + /** + * 查询考勤管理列表 + */ + @RequiresPermissions("manage:attendanceUbiData:list") + @GetMapping("/list") + public TableDataInfo list(AttendanceUbiData attendanceUbiData) + { + startPage(); + List list = attendanceUbiDataService.selectAttendanceUbiDataList(attendanceUbiData); + return getDataTable(list); + } + + /** + * 导出考勤管理列表 + */ + @RequiresPermissions("manage:attendanceUbiData:export") + @Log(title = "考勤管理", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, AttendanceUbiData attendanceUbiData) + { + List list = attendanceUbiDataService.selectAttendanceUbiDataList(attendanceUbiData); + ExcelUtil util = new ExcelUtil(AttendanceUbiData.class); + util.exportExcel(response, list, "考勤管理数据"); + } + + /** + * 获取考勤管理详细信息 + */ + @RequiresPermissions("manage:attendanceUbiData:query") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(attendanceUbiDataService.selectAttendanceUbiDataById(id)); + } + + /** + * 新增考勤管理 + */ + @RequiresPermissions("manage:attendanceUbiData:add") + @Log(title = "考勤管理", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody AttendanceUbiData attendanceUbiData) + { + return toAjax(attendanceUbiDataService.insertAttendanceUbiData(attendanceUbiData)); + } + + /** + * 修改考勤管理 + */ + @RequiresPermissions("manage:attendanceUbiData:edit") + @Log(title = "考勤管理", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody AttendanceUbiData attendanceUbiData) + { + return toAjax(attendanceUbiDataService.updateAttendanceUbiData(attendanceUbiData)); + } + + /** + * 删除考勤管理 + */ + @RequiresPermissions("manage:attendanceUbiData:remove") + @Log(title = "考勤管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(attendanceUbiDataService.deleteAttendanceUbiDataByIds(ids)); + } +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/AttendanceUbiDeviceController.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/AttendanceUbiDeviceController.java new file mode 100644 index 00000000..19aecd2e --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/AttendanceUbiDeviceController.java @@ -0,0 +1,126 @@ +package com.yanzhu.manage.controller; + +import com.yanzhu.common.core.utils.poi.ExcelUtil; +import com.yanzhu.common.core.web.controller.BaseController; +import com.yanzhu.common.core.web.domain.AjaxResult; +import com.yanzhu.common.core.web.page.TableDataInfo; +import com.yanzhu.common.log.annotation.Log; +import com.yanzhu.common.log.enums.BusinessType; +import com.yanzhu.common.security.annotation.RequiresPermissions; +import com.yanzhu.manage.domain.AttendanceUbiDevice; +import com.yanzhu.manage.domain.BusExamInfo; +import com.yanzhu.manage.service.IAttendanceUbiDeviceService; +import com.yanzhu.manage.service.IBusExamInfoService; +import com.yanzhu.manage.service.IUniService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; +/** + * 宇泛的设备信息Controller + * + * @author yanzhu + * @date 2024-10-08 + */ +@RestController +@RequestMapping("/attendance_ubi_device") +public class AttendanceUbiDeviceController extends BaseController +{ + @Autowired + private IAttendanceUbiDeviceService attendanceUbiDeviceService; + + @Autowired + private IUniService uniService; + /** + * 查询宇泛的设备信息列表 + */ + @RequiresPermissions("manage:attendance_ubi_device:list") + @GetMapping("/list") + public TableDataInfo list(AttendanceUbiDevice attendanceUbiDevice) + { + startPage(); + List list = attendanceUbiDeviceService.selectAttendanceUbiDeviceList(attendanceUbiDevice); + return getDataTable(list); + } + + /** + * 导出宇泛的设备信息列表 + */ + @RequiresPermissions("manage:attendance_ubi_device:export") + @Log(title = "宇泛的设备信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, AttendanceUbiDevice attendanceUbiDevice) + { + List list = attendanceUbiDeviceService.selectAttendanceUbiDeviceList(attendanceUbiDevice); + ExcelUtil util = new ExcelUtil(AttendanceUbiDevice.class); + util.exportExcel(response, list, "宇泛的设备信息数据"); + } + + /** + * 获取宇泛的设备信息详细信息 + */ + @RequiresPermissions("manage:attendance_ubi_device:query") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(attendanceUbiDeviceService.selectAttendanceUbiDeviceById(id)); + } + + /** + * 新增宇泛的设备信息 + */ + @RequiresPermissions("manage:attendance_ubi_device:add") + @Log(title = "宇泛的设备信息", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody AttendanceUbiDevice attendanceUbiDevice) + { + AttendanceUbiDevice where=new AttendanceUbiDevice(); + where.setDeviceNo(attendanceUbiDevice.getDeviceNo()); + List list=attendanceUbiDeviceService.selectAttendanceUbiDeviceList(where); + if(list.size()>0){ + return new AjaxResult(500,"此设备编号已存在!"); + } + return toAjax(attendanceUbiDeviceService.insertAttendanceUbiDevice(attendanceUbiDevice)); + } + + /** + * 修改宇泛的设备信息 + */ + @RequiresPermissions("manage:attendance_ubi_device:edit") + @Log(title = "宇泛的设备信息", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody AttendanceUbiDevice attendanceUbiDevice) + { + AttendanceUbiDevice where=new AttendanceUbiDevice(); + where.setDeviceNo(attendanceUbiDevice.getDeviceNo()); + List list=attendanceUbiDeviceService.selectAttendanceUbiDeviceList(where); + if(list.size()>1 || (list.size()==1 && !list.get(0).getId().equals(attendanceUbiDevice.getId()))){ + return new AjaxResult(500,"此设备编号已存在!"); + } + return toAjax(attendanceUbiDeviceService.updateAttendanceUbiDevice(attendanceUbiDevice)); + } + + /** + * 删除宇泛的设备信息 + */ + @RequiresPermissions("manage:attendance_ubi_device:remove") + @Log(title = "宇泛的设备信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(attendanceUbiDeviceService.deleteAttendanceUbiDeviceByIds(ids)); + } + + @PostMapping("/auth") + @RequiresPermissions("manage:attendance_ubi_device:add") + @Log(title = "宇泛的设备授权", businessType = BusinessType.UPDATE) + public AjaxResult auth(@RequestBody AttendanceUbiDevice attendanceUbiDevice){ + long ret= uniService.syncUniDeviceUser(attendanceUbiDevice.getId(),attendanceUbiDevice.getProjectId()); + if(ret==1){ + return AjaxResult.success(); + }else{ + return AjaxResult.error(); + } + } +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/UniCallBackController.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/UniCallBackController.java new file mode 100644 index 00000000..054ff03b --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/UniCallBackController.java @@ -0,0 +1,76 @@ +package com.yanzhu.manage.controller; + +import com.alibaba.fastjson2.JSONObject; +import com.yanzhu.common.core.web.domain.AjaxResult; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.util.Date; +import java.util.Map; + +@RestController +@RequestMapping("/uni/callback") +public class UniCallBackController { + + /** + * 识别回调 + * @param jo + * @return + */ + @PostMapping("/recognize") + public AjaxResult recognize(HttpServletRequest request){ + String data=request.getParameter("eventMsg"); + JSONObject json=JSONObject.parseObject(data); + int type=json.getInteger("type"); + if(type==1){// 人员比对结果,1:比对成功 2:比对失败 + String eventGuid=request.getParameter("eventGuid"); + String admitGuid=json.getString("admitGuid"); + long projectId=Long.parseLong(json.getString("cardNo")); + String deviceNo=json.getString("deviceNo"); + String filePath=json.getString("filePath"); + Date showTime=new Date(json.getLong("showTime")); + + } + return AjaxResult.success("--ok--"); + } + + /** + * 授权回调 + * @param jo + * @return + */ + @PostMapping("/auth") + public AjaxResult auth(@RequestBody JSONObject jo){ + return AjaxResult.success("--ok--"); + } + + /** + * 销权回调 + * @param jo + * @return + */ + @PostMapping("/unauth") + public AjaxResult unauth(@RequestBody JSONObject jo){ + return AjaxResult.success("--ok--"); + } + + /** + * 警报回调 + * @param jo + * @return + */ + @PostMapping("/alarm") + public AjaxResult alarm(@RequestBody JSONObject jo){ + return AjaxResult.success("--ok--"); + } + + /** + * 设备删除回调 + * @param jo + * @return + */ + @PostMapping("/deviceDelete") + public AjaxResult deviceDelete(@RequestBody JSONObject jo){ + return AjaxResult.success("--ok--"); + } +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IAttendanceCfgService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IAttendanceCfgService.java new file mode 100644 index 00000000..29d1e01e --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IAttendanceCfgService.java @@ -0,0 +1,61 @@ +package com.yanzhu.manage.service; + +import java.util.List; +import com.yanzhu.manage.domain.AttendanceCfg; + +/** + * 考勤配置Service接口 + * + * @author yanzhu + * @date 2024-10-08 + */ +public interface IAttendanceCfgService +{ + /** + * 查询考勤配置 + * + * @param id 考勤配置主键 + * @return 考勤配置 + */ + public AttendanceCfg selectAttendanceCfgById(Long id); + + /** + * 查询考勤配置列表 + * + * @param attendanceCfg 考勤配置 + * @return 考勤配置集合 + */ + public List selectAttendanceCfgList(AttendanceCfg attendanceCfg); + + /** + * 新增考勤配置 + * + * @param attendanceCfg 考勤配置 + * @return 结果 + */ + public int insertAttendanceCfg(AttendanceCfg attendanceCfg); + + /** + * 修改考勤配置 + * + * @param attendanceCfg 考勤配置 + * @return 结果 + */ + public int updateAttendanceCfg(AttendanceCfg attendanceCfg); + + /** + * 批量删除考勤配置 + * + * @param ids 需要删除的考勤配置主键集合 + * @return 结果 + */ + public int deleteAttendanceCfgByIds(Long[] ids); + + /** + * 删除考勤配置信息 + * + * @param id 考勤配置主键 + * @return 结果 + */ + public int deleteAttendanceCfgById(Long id); +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IAttendanceUbiDataService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IAttendanceUbiDataService.java new file mode 100644 index 00000000..7c44c4fa --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IAttendanceUbiDataService.java @@ -0,0 +1,61 @@ +package com.yanzhu.manage.service; + +import java.util.List; +import com.yanzhu.manage.domain.AttendanceUbiData; + +/** + * 考勤管理Service接口 + * + * @author yanzhu + * @date 2024-10-12 + */ +public interface IAttendanceUbiDataService +{ + /** + * 查询考勤管理 + * + * @param id 考勤管理主键 + * @return 考勤管理 + */ + public AttendanceUbiData selectAttendanceUbiDataById(Long id); + + /** + * 查询考勤管理列表 + * + * @param attendanceUbiData 考勤管理 + * @return 考勤管理集合 + */ + public List selectAttendanceUbiDataList(AttendanceUbiData attendanceUbiData); + + /** + * 新增考勤管理 + * + * @param attendanceUbiData 考勤管理 + * @return 结果 + */ + public int insertAttendanceUbiData(AttendanceUbiData attendanceUbiData); + + /** + * 修改考勤管理 + * + * @param attendanceUbiData 考勤管理 + * @return 结果 + */ + public int updateAttendanceUbiData(AttendanceUbiData attendanceUbiData); + + /** + * 批量删除考勤管理 + * + * @param ids 需要删除的考勤管理主键集合 + * @return 结果 + */ + public int deleteAttendanceUbiDataByIds(Long[] ids); + + /** + * 删除考勤管理信息 + * + * @param id 考勤管理主键 + * @return 结果 + */ + public int deleteAttendanceUbiDataById(Long id); +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IAttendanceUbiDeviceService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IAttendanceUbiDeviceService.java new file mode 100644 index 00000000..97deed3c --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IAttendanceUbiDeviceService.java @@ -0,0 +1,61 @@ +package com.yanzhu.manage.service; + +import java.util.List; +import com.yanzhu.manage.domain.AttendanceUbiDevice; + +/** + * 宇泛的设备信息Service接口 + * + * @author yanzhu + * @date 2024-10-08 + */ +public interface IAttendanceUbiDeviceService +{ + /** + * 查询宇泛的设备信息 + * + * @param id 宇泛的设备信息主键 + * @return 宇泛的设备信息 + */ + public AttendanceUbiDevice selectAttendanceUbiDeviceById(Long id); + + /** + * 查询宇泛的设备信息列表 + * + * @param attendanceUbiDevice 宇泛的设备信息 + * @return 宇泛的设备信息集合 + */ + public List selectAttendanceUbiDeviceList(AttendanceUbiDevice attendanceUbiDevice); + + /** + * 新增宇泛的设备信息 + * + * @param attendanceUbiDevice 宇泛的设备信息 + * @return 结果 + */ + public int insertAttendanceUbiDevice(AttendanceUbiDevice attendanceUbiDevice); + + /** + * 修改宇泛的设备信息 + * + * @param attendanceUbiDevice 宇泛的设备信息 + * @return 结果 + */ + public int updateAttendanceUbiDevice(AttendanceUbiDevice attendanceUbiDevice); + + /** + * 批量删除宇泛的设备信息 + * + * @param ids 需要删除的宇泛的设备信息主键集合 + * @return 结果 + */ + public int deleteAttendanceUbiDeviceByIds(Long[] ids); + + /** + * 删除宇泛的设备信息信息 + * + * @param id 宇泛的设备信息主键 + * @return 结果 + */ + public int deleteAttendanceUbiDeviceById(Long id); +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java index b128f829..6a786c98 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java @@ -58,4 +58,6 @@ public interface IProProjectInfoSubdeptsUsersService * @return 结果 */ public int deleteProProjectInfoSubdeptsUsersById(Long id); + + } diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IUniService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IUniService.java new file mode 100644 index 00000000..fc567f74 --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IUniService.java @@ -0,0 +1,153 @@ +package com.yanzhu.manage.service; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + +/** + * 宇泛服务封装 + */ +public interface IUniService { + /** + * 鉴权接口 + * @param data + * @return + */ + public Map auth(long projectId) throws NoSuchAlgorithmException; + + /** + * 人员接口-识别主体创建 + * @param data + * @return + */ + public String admitCreate(JSONObject data); + + /** + * 人员接口-识别主体更新 + * @param data + * @return + */ + public String admitUpdate(JSONObject data); + + /** + * 人员接口-识别主体删除 + * @param data + * @return + */ + public boolean admitDeletee(JSONObject data); + + /** + * 人员接口-查询识别主体详情 + * @param data + * @return + */ + public JSONObject admitDetail(JSONObject data); + + /** + * 人员接口-识别主体列表 + * @param data + * @return + */ + public JSONObject admitPage(JSONObject data); + + + /** + * 人员接口-人像注册 + * @param data + * @return + */ + public JSONObject faceRegister(JSONObject data); + + + + /** + * 人员接口-人像删除 + * @param data + * @return + */ + public boolean faceDelete(JSONObject data); + + /** + * 人员接口-人员照片信息查询 + * @param data + * @return + */ + public JSONObject faceDetail(JSONObject data); + + /** + * 设备接口-设备添加 + * @param data + * @return + */ + public String deviceCreate(JSONObject data); + + /** + * 设备接口-设备更新 + * @param data + * @return + */ + public JSONObject deviceUpdate(JSONObject data); + + /** + * 设备接口-设备删除 + * @param data + * @return + */ + public JSONObject deviceDelete(JSONObject data); + + /** + * 设备接口-设备详情 + * @param data + * @return + */ + public JSONObject deviceDetail(JSONObject data); + + /** + * 授权接口-设备授权识别主体 + * @param data + * @return + */ + public String authDevice(JSONObject data); + + /** + * 授权接口-设备修改识别主体权限 + * @param data + * @return + */ + public JSONObject authDeviceUpdate(JSONObject data); + + + /** + * 授权接口-设备销权识别主体 + * @param data + * @return + */ + public JSONObject authDeviceRevoke(JSONObject data); + + + /** + * 同步宇泛的人员和头像 + * @param userId + * @param projectId + */ + public Long syncUniUser(Long userId, Long projectId); + + /** + * 同步宇泛的设备信息 + * @param deviceId + * @param projectId + * @return + */ + public Long syncUniDevice(Long deviceId,Long projectId); + + /** + * 同步设备和主体 + * @param deviceId + * @param projectId + * @return + */ + public Long syncUniDeviceUser(Long deviceId,Long projectId); +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/AttendanceCfgServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/AttendanceCfgServiceImpl.java new file mode 100644 index 00000000..27deda5c --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/AttendanceCfgServiceImpl.java @@ -0,0 +1,100 @@ +package com.yanzhu.manage.service.impl; + +import java.util.List; + +import com.yanzhu.common.core.context.SecurityContextHolder; +import com.yanzhu.common.core.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.yanzhu.manage.mapper.AttendanceCfgMapper; +import com.yanzhu.manage.domain.AttendanceCfg; +import com.yanzhu.manage.service.IAttendanceCfgService; + +/** + * 考勤配置Service业务层处理 + * + * @author yanzhu + * @date 2024-10-08 + */ +@Service +public class AttendanceCfgServiceImpl implements IAttendanceCfgService +{ + @Autowired + private AttendanceCfgMapper attendanceCfgMapper; + + /** + * 查询考勤配置 + * + * @param id 考勤配置主键 + * @return 考勤配置 + */ + @Override + public AttendanceCfg selectAttendanceCfgById(Long id) + { + return attendanceCfgMapper.selectAttendanceCfgById(id); + } + + /** + * 查询考勤配置列表 + * + * @param attendanceCfg 考勤配置 + * @return 考勤配置 + */ + @Override + public List selectAttendanceCfgList(AttendanceCfg attendanceCfg) + { + return attendanceCfgMapper.selectAttendanceCfgList(attendanceCfg); + } + + /** + * 新增考勤配置 + * + * @param attendanceCfg 考勤配置 + * @return 结果 + */ + @Override + public int insertAttendanceCfg(AttendanceCfg attendanceCfg) + { + attendanceCfg.setCreateBy(SecurityContextHolder.getUserName()); + attendanceCfg.setCreateTime(DateUtils.getNowDate()); + return attendanceCfgMapper.insertAttendanceCfg(attendanceCfg); + } + + /** + * 修改考勤配置 + * + * @param attendanceCfg 考勤配置 + * @return 结果 + */ + @Override + public int updateAttendanceCfg(AttendanceCfg attendanceCfg) + { + attendanceCfg.setUpdateBy(SecurityContextHolder.getUserName()); + attendanceCfg.setUpdateTime(DateUtils.getNowDate()); + return attendanceCfgMapper.updateAttendanceCfg(attendanceCfg); + } + + /** + * 批量删除考勤配置 + * + * @param ids 需要删除的考勤配置主键 + * @return 结果 + */ + @Override + public int deleteAttendanceCfgByIds(Long[] ids) + { + return attendanceCfgMapper.deleteAttendanceCfgByIds(ids); + } + + /** + * 删除考勤配置信息 + * + * @param id 考勤配置主键 + * @return 结果 + */ + @Override + public int deleteAttendanceCfgById(Long id) + { + return attendanceCfgMapper.deleteAttendanceCfgById(id); + } +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/AttendanceUbiDataServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/AttendanceUbiDataServiceImpl.java new file mode 100644 index 00000000..0b7e1579 --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/AttendanceUbiDataServiceImpl.java @@ -0,0 +1,100 @@ +package com.yanzhu.manage.service.impl; + +import java.util.List; + +import com.yanzhu.common.core.context.SecurityContextHolder; +import com.yanzhu.common.core.utils.DateUtils; +import com.yanzhu.manage.domain.AttendanceUbiData; +import com.yanzhu.manage.mapper.AttendanceUbiDataMapper; +import com.yanzhu.manage.service.IAttendanceUbiDataService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 考勤管理Service业务层处理 + * + * @author yanzhu + * @date 2024-10-12 + */ +@Service +public class AttendanceUbiDataServiceImpl implements IAttendanceUbiDataService +{ + @Autowired + private AttendanceUbiDataMapper attendanceUbiDataMapper; + + /** + * 查询考勤管理 + * + * @param id 考勤管理主键 + * @return 考勤管理 + */ + @Override + public AttendanceUbiData selectAttendanceUbiDataById(Long id) + { + return attendanceUbiDataMapper.selectAttendanceUbiDataById(id); + } + + /** + * 查询考勤管理列表 + * + * @param attendanceUbiData 考勤管理 + * @return 考勤管理 + */ + @Override + public List selectAttendanceUbiDataList(AttendanceUbiData attendanceUbiData) + { + return attendanceUbiDataMapper.selectAttendanceUbiDataList(attendanceUbiData); + } + + /** + * 新增考勤管理 + * + * @param attendanceUbiData 考勤管理 + * @return 结果 + */ + @Override + public int insertAttendanceUbiData(AttendanceUbiData attendanceUbiData) + { + attendanceUbiData.setCreateBy(SecurityContextHolder.getUserName()); + attendanceUbiData.setCreateTime(DateUtils.getNowDate()); + return attendanceUbiDataMapper.insertAttendanceUbiData(attendanceUbiData); + } + + /** + * 修改考勤管理 + * + * @param attendanceUbiData 考勤管理 + * @return 结果 + */ + @Override + public int updateAttendanceUbiData(AttendanceUbiData attendanceUbiData) + { + attendanceUbiData.setUpdateBy(SecurityContextHolder.getUserName()); + attendanceUbiData.setUpdateTime(DateUtils.getNowDate()); + return attendanceUbiDataMapper.updateAttendanceUbiData(attendanceUbiData); + } + + /** + * 批量删除考勤管理 + * + * @param ids 需要删除的考勤管理主键 + * @return 结果 + */ + @Override + public int deleteAttendanceUbiDataByIds(Long[] ids) + { + return attendanceUbiDataMapper.deleteAttendanceUbiDataByIds(ids); + } + + /** + * 删除考勤管理信息 + * + * @param id 考勤管理主键 + * @return 结果 + */ + @Override + public int deleteAttendanceUbiDataById(Long id) + { + return attendanceUbiDataMapper.deleteAttendanceUbiDataById(id); + } +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/AttendanceUbiDeviceServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/AttendanceUbiDeviceServiceImpl.java new file mode 100644 index 00000000..a7f5edf4 --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/AttendanceUbiDeviceServiceImpl.java @@ -0,0 +1,108 @@ +package com.yanzhu.manage.service.impl; + +import java.util.List; + +import com.yanzhu.common.core.context.SecurityContextHolder; +import com.yanzhu.common.core.utils.DateUtils; +import com.yanzhu.manage.service.IUniService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.yanzhu.manage.mapper.AttendanceUbiDeviceMapper; +import com.yanzhu.manage.domain.AttendanceUbiDevice; +import com.yanzhu.manage.service.IAttendanceUbiDeviceService; + +/** + * 宇泛的设备信息Service业务层处理 + * + * @author yanzhu + * @date 2024-10-08 + */ +@Service +public class AttendanceUbiDeviceServiceImpl implements IAttendanceUbiDeviceService +{ + @Autowired + private AttendanceUbiDeviceMapper attendanceUbiDeviceMapper; + + @Autowired + private IUniService uniService; + /** + * 查询宇泛的设备信息 + * + * @param id 宇泛的设备信息主键 + * @return 宇泛的设备信息 + */ + @Override + public AttendanceUbiDevice selectAttendanceUbiDeviceById(Long id) + { + return attendanceUbiDeviceMapper.selectAttendanceUbiDeviceById(id); + } + + /** + * 查询宇泛的设备信息列表 + * + * @param attendanceUbiDevice 宇泛的设备信息 + * @return 宇泛的设备信息 + */ + @Override + public List selectAttendanceUbiDeviceList(AttendanceUbiDevice attendanceUbiDevice) + { + return attendanceUbiDeviceMapper.selectAttendanceUbiDeviceList(attendanceUbiDevice); + } + + /** + * 新增宇泛的设备信息 + * + * @param attendanceUbiDevice 宇泛的设备信息 + * @return 结果 + */ + @Override + public int insertAttendanceUbiDevice(AttendanceUbiDevice attendanceUbiDevice) + { + attendanceUbiDevice.setCreateBy(SecurityContextHolder.getUserName()); + attendanceUbiDevice.setCreateTime(DateUtils.getNowDate()); + int data= attendanceUbiDeviceMapper.insertAttendanceUbiDevice(attendanceUbiDevice); + uniService.syncUniDevice(attendanceUbiDevice.getId(),attendanceUbiDevice.getProjectId()); + uniService.syncUniDeviceUser(attendanceUbiDevice.getId(),attendanceUbiDevice.getProjectId()); + return data; + } + + /** + * 修改宇泛的设备信息 + * + * @param attendanceUbiDevice 宇泛的设备信息 + * @return 结果 + */ + @Override + public int updateAttendanceUbiDevice(AttendanceUbiDevice attendanceUbiDevice) + { + attendanceUbiDevice.setUpdateBy(SecurityContextHolder.getUserName()); + attendanceUbiDevice.setUpdateTime(DateUtils.getNowDate()); + int data= attendanceUbiDeviceMapper.updateAttendanceUbiDevice(attendanceUbiDevice); + uniService.syncUniDevice(attendanceUbiDevice.getId(),attendanceUbiDevice.getProjectId()); + return data; + } + + /** + * 批量删除宇泛的设备信息 + * + * @param ids 需要删除的宇泛的设备信息主键 + * @return 结果 + */ + @Override + public int deleteAttendanceUbiDeviceByIds(Long[] ids) + { + return attendanceUbiDeviceMapper.deleteAttendanceUbiDeviceByIds(ids); + } + + /** + * 删除宇泛的设备信息信息 + * + * @param id 宇泛的设备信息主键 + * @return 结果 + */ + @Override + public int deleteAttendanceUbiDeviceById(Long id) + { + return attendanceUbiDeviceMapper.deleteAttendanceUbiDeviceById(id); + } +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java index d7943c20..3a1d8f2a 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java @@ -6,6 +6,7 @@ import com.yanzhu.common.core.utils.DateUtils; import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers; import com.yanzhu.manage.mapper.ProProjectInfoSubdeptsUsersMapper; import com.yanzhu.manage.service.IProProjectInfoSubdeptsUsersService; +import com.yanzhu.manage.service.IUniService; import com.yanzhu.system.api.RemoteUserService; import com.yanzhu.system.api.domain.SysUser; import org.springframework.beans.factory.annotation.Autowired; @@ -28,6 +29,8 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu @Autowired private RemoteUserService remoteUserService; + @Autowired + private IUniService uniService; /** * 查询分包单位工人 * @@ -71,6 +74,7 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu }else{ remoteUserService.updateUserInfo(user,SecurityConstants.INNER).getData(); } + uniService.syncUniUser(user.getUserId(),proProjectInfoSubdeptsUsers.getProjectId()); return proProjectInfoSubdeptsUsersMapper.insertProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers); } @@ -85,9 +89,20 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu { proProjectInfoSubdeptsUsers.setUpdateTime(DateUtils.getNowDate()); proProjectInfoSubdeptsUsers.setUpdateBy(SecurityContextHolder.getUserName()); + SysUser user=proProjectInfoSubdeptsUsers.getUser(); + if(user.getUserId()==null||user.getUserId().intValue()==0){ + Long userId= remoteUserService.registerUserInfo(user, SecurityConstants.INNER).getData(); + user.setUserId(userId); + proProjectInfoSubdeptsUsers.setUserId(userId); + }else{ + remoteUserService.updateUserInfo(user,SecurityConstants.INNER).getData(); + } + uniService.syncUniUser(user.getUserId(),proProjectInfoSubdeptsUsers.getProjectId()); return proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers); } + + /** * 批量删除分包单位工人 * @@ -102,7 +117,7 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu /** * 删除分包单位工人信息 - * + * * @param id 分包单位工人主键 * @return 结果 */ diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/UniServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/UniServiceImpl.java new file mode 100644 index 00000000..b9508ccc --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/UniServiceImpl.java @@ -0,0 +1,417 @@ +package com.yanzhu.manage.service.impl; + + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.alibaba.nacos.common.utils.MD5Utils; +import com.yanzhu.common.core.constant.CacheConstants; +import com.yanzhu.common.core.constant.SecurityConstants; +import com.yanzhu.common.core.utils.StringUtils; +import com.yanzhu.common.redis.service.RedisService; +import com.yanzhu.manage.domain.AttendanceCfg; +import com.yanzhu.manage.domain.AttendanceUbiDevice; +import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers; +import com.yanzhu.manage.mapper.AttendanceCfgMapper; +import com.yanzhu.manage.mapper.AttendanceUbiDeviceMapper; +import com.yanzhu.manage.mapper.ProProjectInfoSubdeptsUsersMapper; +import com.yanzhu.manage.service.IUniService; +import com.yanzhu.manage.utils.UniUtils; +import com.yanzhu.system.api.RemoteUserService; +import com.yanzhu.system.api.domain.SysUser; +import okhttp3.Request; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.security.NoSuchAlgorithmException; +import java.util.*; +import java.util.concurrent.TimeUnit; + +@Service +public class UniServiceImpl implements IUniService{ + + @Autowired + private RedisService redisService; + + @Autowired + private AttendanceCfgMapper attendanceCfgMapper; + + @Autowired + private RemoteUserService remoteUserService; + + @Autowired + private AttendanceUbiDeviceMapper attendanceUbiDeviceMapper; + + @Autowired + private ProProjectInfoSubdeptsUsersMapper proProjectInfoSubdeptsUsersMapper; + private void clearAuthCache(long projectId){ + String cacheKey=CacheConstants.UNI_AUTH+projectId; + redisService.deleteObject(cacheKey); + } + + @Override + public Map auth(long projectId) { + String cacheKey=CacheConstants.UNI_AUTH+projectId; + Map authMap = redisService.getCacheObject(cacheKey); + String authInfo="404"; + String projectGuid="404"; + if(authMap!=null){ + return authMap; + }else{ + authMap=new HashMap<>(); + } + AttendanceCfg where=new AttendanceCfg(); + where.setProjectId(projectId); + List list=attendanceCfgMapper.selectAttendanceCfgList(where); + if(list.size()>0){ + AttendanceCfg cfg=list.get(0); + if(cfg.getVendorsCode().equals("uni") && StringUtils.isNotEmpty(cfg.getVendorsParameter())){ + JSONObject json=JSON.parseObject(cfg.getVendorsParameter()); + String appKey=json.getString("AppKey"); + String appSecret=json.getString("AppSecret"); + projectGuid=json.getString("projectGuid"); + String timestamp=""+new Date().getTime(); + Map headerParams=new HashMap<>(); + headerParams.put("appKey",appKey); + headerParams.put("timestamp",timestamp); + String sign=appKey+timestamp+appSecret; + headerParams.put("sign", UniUtils.md5(sign).toLowerCase()); + Request request = new Request.Builder() + .url(UniUtils.getAuthUrl(projectGuid)) + .get().headers(UniUtils.setHeaderParams(headerParams)) + .build(); + String str=UniUtils.getResult(request); + JSONObject jo=JSON.parseObject(str); + String data= jo.getString("data"); + if(StringUtils.isNotEmpty(data)){ + authInfo=data; + authMap.put("token",authInfo); + authMap.put("projectGuid",projectGuid); + redisService.setCacheObject(cacheKey, authMap, 20l, TimeUnit.HOURS);//缓存20小时 + } + } + } + return authMap; + } + + @Override + public String admitCreate(JSONObject data) { + long projectId=data.getLong("projectId"); + data.remove("projectId"); + Request request=new Request.Builder() + .url(UniUtils.ADMITCREATE) + .post(UniUtils.toJsonBody(data)) + .headers(UniUtils.setHeaderParams(auth(projectId))) + .build(); + String res=UniUtils.getResult(request); + JSONObject jo=JSON.parseObject(res); + if(jo.getLong("result").intValue()==1){ + return jo.getJSONObject("data").getString("admitGuid"); + } + if("token is illegal".equals(jo.getString("msg"))){ + clearAuthCache(projectId); + return admitCreate(data); + } + return null; + } + + @Override + public String admitUpdate(JSONObject data) { + long projectId=data.getLong("projectId"); + data.remove("projectId"); + Request request=new Request.Builder() + .url(UniUtils.ADMITUPDATE) + .post(UniUtils.toJsonBody(data)) + .headers(UniUtils.setHeaderParams(auth(projectId))) + .build(); + String res=UniUtils.getResult(request); + JSONObject jo=JSON.parseObject(res); + if("token is illegal".equals(jo.getString("msg"))){ + clearAuthCache(projectId); + return admitUpdate(data); + } + + return jo.getString("msg"); + } + + @Override + public boolean admitDeletee(JSONObject data) { + long projectId=data.getLong("projectId"); + data.remove("projectId"); + Request request=new Request.Builder() + .url(UniUtils.ADMITDELETE) + .post(UniUtils.toJsonBody(data)) + .headers(UniUtils.setHeaderParams(auth(projectId))) + .build(); + String res=UniUtils.getResult(request); + JSONObject jo=JSON.parseObject(res); + if("token is illegal".equals(jo.getString("msg"))){ + clearAuthCache(projectId); + return admitDeletee(data); + } + return jo.getLong("result").intValue()==1; + } + + @Override + public JSONObject admitDetail(JSONObject data) { + return null; + } + + @Override + public JSONObject admitPage(JSONObject data) { + return null; + } + + @Override + public JSONObject faceRegister(JSONObject data) { + long projectId=data.getLong("projectId"); + data.remove("projectId"); + Request request=new Request.Builder() + .url(UniUtils.FACEREGISTER) + .post(UniUtils.toJsonBody(data)) + .headers(UniUtils.setHeaderParams(auth(projectId))) + .build(); + String res=UniUtils.getResult(request); + JSONObject jo=JSON.parseObject(res); + if(jo.getLong("result").intValue()==1){ + return jo.getJSONObject("data"); + } + if("token is illegal".equals(jo.getString("msg"))){ + clearAuthCache(projectId); + return faceRegister(data); + } + return null; + } + + @Override + public boolean faceDelete(JSONObject data) { + long projectId=data.getLong("projectId"); + data.remove("projectId"); + Request request=new Request.Builder() + .url(UniUtils.FACEDELETE) + .post(UniUtils.toJsonBody(data)) + .headers(UniUtils.setHeaderParams(auth(projectId))) + .build(); + String res=UniUtils.getResult(request); + JSONObject jo=JSON.parseObject(res); + if("token is illegal".equals(jo.getString("msg"))){ + clearAuthCache(projectId); + return faceDelete(data); + } + return jo.getLong("result").intValue()==1; + } + + @Override + public JSONObject faceDetail(JSONObject data) { + return null; + } + + @Override + public String deviceCreate(JSONObject data) { + long projectId=data.getLong("projectId"); + Request request=new Request.Builder() + .url(UniUtils.DEVICECREATE) + .post(UniUtils.toJsonBody(data)) + .headers(UniUtils.setHeaderParams(auth(projectId))) + .build(); + String res=UniUtils.getResult(request); + JSONObject jo=JSON.parseObject(res); + if(jo.getLong("result").intValue()==1){ + return "success"; + } + if("token is illegal".equals(jo.getString("msg"))){ + clearAuthCache(projectId); + return deviceCreate(data); + } + return jo.getString("msg"); + } + + @Override + public JSONObject deviceUpdate(JSONObject data) { + return null; + } + + @Override + public JSONObject deviceDelete(JSONObject data) { + return null; + } + + @Override + public JSONObject deviceDetail(JSONObject data) { + long projectId=data.getLong("projectId"); + Request request=new Request.Builder() + .url(UniUtils.DEVICEDETAIL) + .post(UniUtils.toJsonBody(data)) + .headers(UniUtils.setHeaderParams(auth(projectId))) + .build(); + String res=UniUtils.getResult(request); + JSONObject jo=JSON.parseObject(res); + if(jo.getLong("result").intValue()==1){ + return jo.getJSONObject("data"); + } + if("token is illegal".equals(jo.getString("msg"))){ + clearAuthCache(projectId); + return deviceDetail(data); + } + return null; + } + + @Override + public String authDevice(JSONObject data) { + long projectId=data.getLong("projectId"); + Request request=new Request.Builder() + .url(UniUtils.AUTHDEVICE) + .post(UniUtils.toJsonBody(data)) + .headers(UniUtils.setHeaderParams(auth(projectId))) + .build(); + String res=UniUtils.getResult(request); + JSONObject jo=JSON.parseObject(res); + if(jo.getLong("result").intValue()==1){ + return "success"; + } + if("token is illegal".equals(jo.getString("msg"))){ + clearAuthCache(projectId); + return deviceCreate(data); + } + return jo.getString("msg"); + } + + @Override + public JSONObject authDeviceUpdate(JSONObject data) { + return null; + } + + @Override + public JSONObject authDeviceRevoke(JSONObject data) { + return null; + } + @Override + public Long syncUniDeviceUser(Long deviceId,Long projectId){ + AttendanceUbiDevice device=attendanceUbiDeviceMapper.selectAttendanceUbiDeviceById(deviceId); + ProProjectInfoSubdeptsUsers userWhere=new ProProjectInfoSubdeptsUsers(); + userWhere.setProjectId(projectId); + List userList=proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersList(userWhere); + JSONObject jo=new JSONObject(); + jo.put("projectId",projectId); + jo.put("deviceNo",device.getDeviceNo()); + List admitGuidList=new ArrayList<>(); + for(ProProjectInfoSubdeptsUsers u :userList){ + JSONObject json=JSON.parseObject(u.getUser().getUserInfos()); + String admitGuid=json.getString("admitGuid"); + if(StringUtils.isNotEmpty(admitGuid)){ + admitGuidList.add(admitGuid); + } + } + for(int i=0;i0){ + admitGuids=admitGuids.substring(0,admitGuids.length()-1); + } + jo.put("admitGuids",admitGuids); + authDevice(jo); + } + return 1l; + } + @Override + public Long syncUniDevice(Long deviceId,Long projectId){ + AttendanceUbiDevice device=attendanceUbiDeviceMapper.selectAttendanceUbiDeviceById(deviceId); + if(device!=null){ + JSONObject jo=new JSONObject(); + jo.put("projectId",projectId); + jo.put("name",device.getName()); + jo.put("tag",device.getTag()); + jo.put("source",device.getSource()); + jo.put("sceneGuid",""); + jo.put("deviceNo",device.getDeviceNo()); + jo.put("addition","{'recType':'1'}"); + String ret= deviceCreate(jo); + if("success".equals(ret)||"device is occupied".equals(ret)){ + JSONObject joDetail=deviceDetail(jo); + device.setHasRegister(1l); + device.setLastActiveTime(new Date()); + device.setDeviceModel(joDetail.getString("deviceModel")); + device.setDeviceState(joDetail.getLong("state")); + device.setOnlineState(joDetail.getLong("onlineState")); + device.setVersionNo(joDetail.getString("versionNo")); + device.setAddition(joDetail.getString("addition")); + device.setRecType(joDetail.getLong("recType")); + attendanceUbiDeviceMapper.updateAttendanceUbiDevice(device); + return 1l; + } + } + return 0l; + } + @Override + public Long syncUniUser(Long userId, Long projectId) { + SysUser user=remoteUserService.getSysUserInfo(userId, SecurityConstants.INNER).getData(); + JSONObject jo=JSON.parseObject(user.getUserInfos()); + String admitGuid=jo.getString("admitGuid"); + String faceGuid=jo.getString("faceGuid"); + JSONObject userJo=new JSONObject(); + userJo.put("projectId",projectId); + userJo.put("name",user.getUserName()); + userJo.put("phone",user.getPhonenumber()); + userJo.put("tag",user.getNickName()); + userJo.put("cardNo",user.getUserId()+","+projectId); + userJo.put("idCardNo",user.getCardCode()); + userJo.put("password","123456"); + userJo.put("addition",""); + boolean hasUpdate=false; + if(StringUtils.isEmpty(admitGuid)){ + //未注册人员 + admitGuid=admitCreate(userJo); + jo.put("admitGuid",admitGuid); + hasUpdate=true; + }else{ + //已注册 + userJo.put("admitGuid",admitGuid); + String upMsg= admitUpdate(userJo); + if("admit not exist".equals(upMsg)){ + userJo.remove("admitGuid"); + userJo.put("projectId",projectId); + admitGuid=admitCreate(userJo); + jo.put("admitGuid",admitGuid); + hasUpdate=true; + } + } + JSONObject faceJo=new JSONObject(); + faceJo.put("projectId",projectId); + faceJo.put("base64",""); + faceJo.put("admitGuid",admitGuid); + faceJo.put("url",user.getUserPicture()); + //faceJo.put("url","https://uniubi-aiot.oss-cn-hangzhou.aliyuncs.com/detect/20241007/211204-71D9BCBE526C4F57B8D31ECAE03AEBFB"); + faceJo.put("faceTag",""); + HttpServletRequest request =((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest(); + String url= request.getRemoteAddr(); + if(StringUtils.isNotEmpty(faceGuid)){ + JSONObject faceDel=new JSONObject(); + faceDel.put("projectId",projectId); + faceDel.put("admitGuid",admitGuid); + faceDel.put("faceGuid",faceGuid); + faceDelete(faceDel); + } + //注册图像 + JSONObject faceRes= faceRegister(faceJo); + if(faceRes!=null) { + jo.put("faceGuid", faceRes.getString("faceGuid")); + jo.put("uniFaceInfo", faceRes.toJSONString()); + hasUpdate=true; + } + user.setUserInfos(jo.toJSONString()); + if(hasUpdate){ + Long ret= remoteUserService.updateUserInfo(user,SecurityConstants.INNER).getData(); + if(ret==null){ + return 0l; + } + return ret.longValue(); + } + return 0l; + } + +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/utils/UniUtils.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/utils/UniUtils.java new file mode 100644 index 00000000..5c576cad --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/utils/UniUtils.java @@ -0,0 +1,75 @@ +package com.yanzhu.manage.utils; + +import com.alibaba.fastjson2.JSONObject; +import com.alibaba.nacos.common.utils.MD5Utils; +import com.yanzhu.common.core.utils.StringUtils; +import okhttp3.*; + +import java.io.IOException; +import java.util.Map; + +public class UniUtils { + public static final String UNIBASE="http://wo-api.uni-ubi.com/"; + public static final String ADMITCREATE=UNIBASE+"v2/admit/create"; + public static final String ADMITUPDATE=UNIBASE+"v2/admit/update"; + public static final String ADMITDELETE=UNIBASE+"v2/admit/delete"; + public static final String ADMITDETAIL=UNIBASE+"v2/admit/detail"; + public static final String FACEREGISTER=UNIBASE+"v2/face/register"; + public static final String FACEDELETE=UNIBASE+"v2/face/delete"; + public static final String FACEDETAIL=UNIBASE+"v2/face/detail"; + + public static final String DEVICECREATE=UNIBASE+"v2/device/create"; + public static final String DEVICEUPATE=UNIBASE+"v2/device/update"; + public static final String DEVICEDELETE=UNIBASE+"v2/device/delete"; + public static final String DEVICEDETAIL=UNIBASE+"v2/device/detail"; + + public static final String AUTHDEVICE=UNIBASE+"v2/auth/device"; + public static final String AUTHDEVICEUPDATE=UNIBASE+"v2/auth/device/update"; + public static String getAuthUrl(String projectGuid){ + return UNIBASE+ "/v1/"+projectGuid+"/auth"; + } + + public static Headers setHeaderParams(Map headerParams) { + Headers headers = null; + Headers.Builder headersbuilder = new Headers.Builder(); + if (headerParams != null && headerParams.size() > 0) { + for (String key : headerParams.keySet()) { + if (!StringUtils.isEmpty(key) && !StringUtils.isEmpty(headerParams.get(key))) { + //如果参数不是null并且不是"",就拼接起来 + headersbuilder.add(key, headerParams.get(key)); + } + } + } + + headers = headersbuilder.build(); + return headers; + } + + public static String getResult(Request request) { + OkHttpClient client = new OkHttpClient(); + Response response; + try { + response = client.newCall(request).execute(); + if (response.body() != null) { + return response.body().string(); + } else { + return ""; + } + } catch (IOException e) { + e.printStackTrace(); + return ""; + } + } + + public static RequestBody toJsonBody(JSONObject data) { + return RequestBody.create(MediaType.parse("application/json"),data.toJSONString()); + } + + public static String md5(String data){ + try { + return MD5Utils.md5Hex(data.getBytes()); + }catch (Exception ex){ + return ""; + } + } +} diff --git a/yanzhu-modules/yanzhu-system/src/main/resources/mapper/system/SysUserMapper.xml b/yanzhu-modules/yanzhu-system/src/main/resources/mapper/system/SysUserMapper.xml index f598d014..e9133d1a 100644 --- a/yanzhu-modules/yanzhu-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/yanzhu-modules/yanzhu-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -32,7 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + @@ -66,7 +66,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select u.user_id, u.com_id, com.dept_name as com_name, u.dept_id, u.user_name, u.nick_name, u.user_type, u.card_type, u.card_code, u.user_picture, u.card_img_pos, u.card_img_inv, u.user_infos, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, + select u.user_id, u.com_id, com.dept_name as com_name, u.dept_id, u.user_name, u.nick_name, u.user_type, u.card_type, + u.admitGuid, + u.card_code, u.user_picture, u.card_img_pos, u.card_img_inv, u.user_infos, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.dept_short_name, d.dept_code, d.dept_type, d.order_num, d.leader, d.status as dept_status, r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status,com.dept_name com_dept_name from sys_user u @@ -77,7 +79,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"