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-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 index 5d471be5..60ec2233 100644 --- 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 @@ -100,6 +100,35 @@ public class AttendanceUbiDevice extends BaseEntity @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; 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/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 index 3ac56223..476a9a27 100644 --- 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 @@ -31,44 +31,52 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + - select 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 from attendance_ubi_device + 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, 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 index 53cbc63f..19aecd2e 100644 --- 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 @@ -11,6 +11,7 @@ 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.*; @@ -29,6 +30,8 @@ public class AttendanceUbiDeviceController extends BaseController @Autowired private IAttendanceUbiDeviceService attendanceUbiDeviceService; + @Autowired + private IUniService uniService; /** * 查询宇泛的设备信息列表 */ @@ -72,6 +75,12 @@ public class AttendanceUbiDeviceController extends BaseController @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)); } @@ -83,6 +92,12 @@ public class AttendanceUbiDeviceController extends BaseController @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)); } @@ -96,4 +111,16 @@ public class AttendanceUbiDeviceController extends BaseController { 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/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/IUniService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IUniService.java index b23ecbdd..fc567f74 100644 --- 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 @@ -82,7 +82,7 @@ public interface IUniService { * @param data * @return */ - public JSONObject deviceCreate(JSONObject data); + public String deviceCreate(JSONObject data); /** * 设备接口-设备更新 @@ -110,7 +110,7 @@ public interface IUniService { * @param data * @return */ - public JSONObject authDevice(JSONObject data); + public String authDevice(JSONObject data); /** * 授权接口-设备修改识别主体权限 @@ -134,4 +134,20 @@ public interface IUniService { * @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/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 index c8cb6a99..a7f5edf4 100644 --- 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 @@ -4,6 +4,7 @@ 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; @@ -22,6 +23,8 @@ public class AttendanceUbiDeviceServiceImpl implements IAttendanceUbiDeviceServi @Autowired private AttendanceUbiDeviceMapper attendanceUbiDeviceMapper; + @Autowired + private IUniService uniService; /** * 查询宇泛的设备信息 * @@ -57,7 +60,10 @@ public class AttendanceUbiDeviceServiceImpl implements IAttendanceUbiDeviceServi { attendanceUbiDevice.setCreateBy(SecurityContextHolder.getUserName()); attendanceUbiDevice.setCreateTime(DateUtils.getNowDate()); - return attendanceUbiDeviceMapper.insertAttendanceUbiDevice(attendanceUbiDevice); + int data= attendanceUbiDeviceMapper.insertAttendanceUbiDevice(attendanceUbiDevice); + uniService.syncUniDevice(attendanceUbiDevice.getId(),attendanceUbiDevice.getProjectId()); + uniService.syncUniDeviceUser(attendanceUbiDevice.getId(),attendanceUbiDevice.getProjectId()); + return data; } /** @@ -71,7 +77,9 @@ public class AttendanceUbiDeviceServiceImpl implements IAttendanceUbiDeviceServi { attendanceUbiDevice.setUpdateBy(SecurityContextHolder.getUserName()); attendanceUbiDevice.setUpdateTime(DateUtils.getNowDate()); - return attendanceUbiDeviceMapper.updateAttendanceUbiDevice(attendanceUbiDevice); + int data= attendanceUbiDeviceMapper.updateAttendanceUbiDevice(attendanceUbiDevice); + uniService.syncUniDevice(attendanceUbiDevice.getId(),attendanceUbiDevice.getProjectId()); + return data; } /** 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 index 36759dbd..b9508ccc 100644 --- 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 @@ -10,8 +10,11 @@ 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; @@ -24,10 +27,7 @@ import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; import java.security.NoSuchAlgorithmException; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.TimeUnit; @Service @@ -42,6 +42,11 @@ public class UniServiceImpl implements IUniService{ @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); @@ -205,8 +210,23 @@ public class UniServiceImpl implements IUniService{ } @Override - public JSONObject deviceCreate(JSONObject data) { - return null; + 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 @@ -221,12 +241,42 @@ public class UniServiceImpl implements IUniService{ @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 JSONObject authDevice(JSONObject data) { - return null; + 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 @@ -238,7 +288,65 @@ public class UniServiceImpl implements IUniService{ 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(); @@ -250,7 +358,7 @@ public class UniServiceImpl implements IUniService{ userJo.put("name",user.getUserName()); userJo.put("phone",user.getPhonenumber()); userJo.put("tag",user.getNickName()); - userJo.put("cardNo",user.getUserId()); + userJo.put("cardNo",user.getUserId()+","+projectId); userJo.put("idCardNo",user.getCardCode()); userJo.put("password","123456"); userJo.put("addition",""); @@ -276,8 +384,8 @@ public class UniServiceImpl implements IUniService{ 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("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(); @@ -306,5 +414,4 @@ public class UniServiceImpl implements IUniService{ return 0l; } - } 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"