Commit ea6ad660 authored by 赵啸非's avatar 赵啸非

修改同步用户

parent 483058fb
package com.mortals.xhx.common.pdu;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.web.BaseForm;
public class LoginForm extends BaseForm {
private String loginName;
private String password;
private String securityCode;
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSecurityCode() {
return securityCode;
}
public void setSecurityCode(String securityCode) {
this.securityCode = securityCode;
}
@Override
public String toString() {
return "loginName:" + this.loginName + " password:" + this.password;
}
@Override
public boolean validate() throws AppException {
if (loginName == null || loginName.trim().length() == 0) {
throw new AppException("帐号不能为空!");
}
if (password == null || password.trim().length() == 0) {
throw new AppException("密码不能为空!");
}
// if (securityCode == null || securityCode.trim().length() == 0) {
// throw new AppException("验证码不能为空!");
// }
return super.validate();
}
}
package com.mortals.xhx.common.pdu.device;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class DeviceReq implements Serializable {
/**
* 1:新增,2:修改,3:删除,4:激活,5:启用,6:停用
*/
private Integer receiveMethod;
/**
* 产品id
*/
private Long productId;
/**
* 产品编码
*/
private String productCode;
/**
* 设备生产厂商ID
*/
private Long deviceFirmId;
/**
* 设备生产厂商名称
*/
private String deviceFirmname;
/**
* 设备名称
*/
private String deviceName;
/**
* 设备编码(暂定mac地址)
*/
private String deviceCode;
/**
* 设备Mac
*/
private String deviceMac;
/**
* 所属站点Id
*/
private Long siteId;
/**
* 所属站点编码
*/
private String siteCode;
/**
* 所属站点名称
*/
private String siteName;
/**
* 设备备注信息
*/
private String deviceRemark;
/**
* 设备
*/
private String homeUrl;
/**
* 设备访问ip
*/
private String ip;
/**
* 中心设备编码
*/
private String centernum;
/**
* 端口
*/
private String port;
/**
* 经度
*/
private String lon;
/**
* 纬度
*/
private String lati;
/**
* 楼层
*/
private Integer deviceInBuilding;
/**
* 所属楼栋
*/
private Integer deviceInFloor;
/**
* 负责人
*/
private String leadingOfficial;
/**
* 联系电话
*/
private String leadingOfficialTelephone;
/**
* 保修期至
*/
private Date defectsLiabilityPeriod;
/**
* 设备状态 (0.未激活,1.离线,2.在线)
*/
private Integer deviceStatus;
/**
* 设备来源(0.旧设备,1.新设备)
*/
private Integer source;
/**
* 激活(0.否,1.是)
*/
private Integer active;
/**
* 设备版本信息
*/
private String deviceVersion;
}
package com.mortals.xhx.feign.device; package com.mortals.xhx.feign.device;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.xhx.common.pdu.LoginForm;
import com.mortals.xhx.common.pdu.RespData; import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.device.DevicePdu; import com.mortals.xhx.common.pdu.device.DevicePdu;
import com.mortals.xhx.common.pdu.device.DeviceReq;
import com.mortals.xhx.feign.IFeign; import com.mortals.xhx.feign.IFeign;
import feign.hystrix.FallbackFactory; import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -11,8 +13,10 @@ import org.springframework.stereotype.Component; ...@@ -11,8 +13,10 @@ import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
/** /**
* 设备 Feign接口 * 设备 Feign接口
*
* @author zxfei * @author zxfei
* @date 2023-02-25 * @date 2023-02-25
*/ */
...@@ -47,9 +51,28 @@ public interface IDeviceFeign extends IFeign { ...@@ -47,9 +51,28 @@ public interface IDeviceFeign extends IFeign {
* @return * @return
*/ */
@PostMapping(value = "/device/save") @PostMapping(value = "/device/save")
Rest<RespData<DevicePdu>> save(@RequestBody DevicePdu devicePdu,@RequestHeader("Authorization") String authorization); Rest<RespData<DevicePdu>> save(@RequestBody DevicePdu devicePdu, @RequestHeader("Authorization") String authorization);
/**
* 获取token
*
* @param loginForm
* @return
*/
@PostMapping(value = "/api/getToken")
Rest<String> getToken(@RequestBody LoginForm loginForm);
/**
* 设备回调
*
* @param deviceReq
* @return
*/
@PostMapping(value = "/api/receive")
Rest<String> deviceCall(@RequestBody DeviceReq deviceReq, @RequestHeader("Authorization") String authorization);
} }
...@@ -61,18 +84,28 @@ class DeviceFeignFallbackFactory implements FallbackFactory<IDeviceFeign> { ...@@ -61,18 +84,28 @@ class DeviceFeignFallbackFactory implements FallbackFactory<IDeviceFeign> {
return new IDeviceFeign() { return new IDeviceFeign() {
@Override @Override
public Rest<RespData<List<DevicePdu>>> list(DevicePdu devicePdu) { public Rest<RespData<List<DevicePdu>>> list(DevicePdu devicePdu) {
return Rest.fail("暂时无法获取设备列表,请稍后再试!"); return Rest.fail("暂时无法获取设备列表,请稍后再试!");
} }
@Override @Override
public Rest<DevicePdu> info(Long id) { public Rest<DevicePdu> info(Long id) {
return Rest.fail("暂时无法获取设备详细,请稍后再试!"); return Rest.fail("暂时无法获取设备详细,请稍后再试!");
} }
@Override @Override
public Rest<RespData<DevicePdu>> save(DevicePdu devicePdu, String authorization) { public Rest<RespData<DevicePdu>> save(DevicePdu devicePdu, String authorization) {
return Rest.fail("暂时无法保存设备,请稍后再试!"); return Rest.fail("暂时无法保存设备,请稍后再试!");
} }
@Override
public Rest<String> getToken(LoginForm loginForm) {
return Rest.fail("暂时无法获取token,请稍后再试!");
}
@Override
public Rest<String> deviceCall(DeviceReq deviceReq, String authorization) {
return Rest.fail("暂时无法保存设备,请稍后再试!");
}
}; };
} }
} }
......
...@@ -57,8 +57,10 @@ CREATE TABLE mortals_xhx_room( ...@@ -57,8 +57,10 @@ CREATE TABLE mortals_xhx_room(
`createTime` datetime NOT NULL COMMENT '创建时间', `createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户', `updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间', `updateTime` datetime COMMENT '更新时间',
`deviceCode` varchar(64) COMMENT '绑定的设备编码',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='房间管理'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='房间管理';
-- ---------------------------- -- ----------------------------
-- 房间工作人员信息表 -- 房间工作人员信息表
-- ---------------------------- -- ----------------------------
...@@ -96,8 +98,11 @@ CREATE TABLE mortals_xhx_workman( ...@@ -96,8 +98,11 @@ CREATE TABLE mortals_xhx_workman(
`createTime` datetime COMMENT '创建时间', `createTime` datetime COMMENT '创建时间',
`createUserId` bigint(20) COMMENT '创建用户', `createUserId` bigint(20) COMMENT '创建用户',
`updateTime` datetime COMMENT '修改时间', `updateTime` datetime COMMENT '修改时间',
`loginName` varchar(64) COMMENT '登录用户名',
`loginPwd` varchar(64) COMMENT '密码',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='工作人员'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='工作人员';
-- ---------------------------- -- ----------------------------
-- 设备管理表 -- 设备管理表
-- ---------------------------- -- ----------------------------
......
...@@ -2370,6 +2370,74 @@ msg|String|消息|- ...@@ -2370,6 +2370,74 @@ msg|String|消息|-
``` ```
## 终端服务 ## 终端服务
### 工作人员登录
**请求URL:** workman/doLogin
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:**
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
loginName|String|用户名|是|-
loginPwd|String|密码|是|-
**请求样例:**
```
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
**响应消息样例:**
```
```
### 工作人员密码修改
**请求URL:** workman/change/password
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:**
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
loginName|String|用户名|是|-
oldPwd|String|旧密码|是|-
newPwd|String|新密码|是|-
**请求样例:**
```
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
### 工作人员列表 ### 工作人员列表
**请求URL:** workman/list **请求URL:** workman/list
...@@ -2382,16 +2450,19 @@ msg|String|消息|- ...@@ -2382,16 +2450,19 @@ msg|String|消息|-
**请求参数:** **请求参数:**
参数名称|类型|必填|描述 参数名称| 类型 |必填|描述
:---|:---|:---|:------ :---|:--------|:---|:------
page|Integer|否|当前页 page| Integer |否|当前页
size|Integer|否|每页条数,值为-1,查询所有记录 size| Integer |否|每页条数,值为-1,查询所有记录
deviceCode| String |否|设备编码
**请求样例:** **请求样例:**
``` ```
{ {
"page":1, "page":1,
"size":10 "size":10,
"deviceCode":"123123"
} }
``` ```
...@@ -2515,12 +2586,14 @@ data| object |数据对象 ...@@ -2515,12 +2586,14 @@ data| object |数据对象
:---|:---|:---|:------ :---|:---|:---|:------
page|Integer|否|当前页 page|Integer|否|当前页
size|Integer|否|每页条数,值为-1,查询所有记录 size|Integer|否|每页条数,值为-1,查询所有记录
deviceCode| String |否|设备编码
**请求样例:** **请求样例:**
``` ```
{ {
"page":1, "page":1,
"size":10 "size":10,
"deviceCode","adfdd"
} }
``` ```
......
...@@ -7,8 +7,10 @@ ...@@ -7,8 +7,10 @@
size="50%"> size="50%">
<el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row> <el-row>
<Field :span="20" label="所属房间" prop="roomId" v-model="form.roomId" :enumData="dict.roomId" type="select" placeholder="请输入所属房间"/> <Field :span="20" :disabled="pageInfo.type=='edit'" label="登录名" prop="loginName" v-model="form.loginName" placeholder="请输入登录名"/>
<Field :span="20" :disabled="pageInfo.type=='edit'" label="登录密码" prop="loginPwd" type="password" v-model="form.loginPwd" placeholder="请输入密码"/>
<Field :span="20" label="所属房间" prop="roomId" v-model="form.roomId" :enumData="dict.roomId" type="select" placeholder="请输入所属房间"/>
<Field :span="20" label="所属部门" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门"/> <Field :span="20" label="所属部门" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门"/>
<Field :span="20" label="姓名" prop="name" v-model="form.name" placeholder="请输入姓名"/> <Field :span="20" label="姓名" prop="name" v-model="form.name" placeholder="请输入姓名"/>
<Field :span="20" label="性别" prop="sex" v-model="form.sex" type="select" :enumData="dict.sex" placeholder="请选择性别"/> <Field :span="20" label="性别" prop="sex" v-model="form.sex" type="select" :enumData="dict.sex" placeholder="请选择性别"/>
...@@ -62,6 +64,22 @@ ...@@ -62,6 +64,22 @@
], ],
// 表单校验 // 表单校验
rules: { rules: {
loginName: [
{required: true,message: "请输入登录名称", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
loginPwd: [
{required: true,message: "请输入登录密码", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
roomId: [
{required: true,message: "请选择人员所属房间", trigger: "blur" }
],
mobile: [
{required: true,message: "请输入手机号码", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
workStatus: [ workStatus: [
{required: true,message: "请输入工作状态,来源基础设置", trigger: "blur" }, {required: true,message: "请输入工作状态,来源基础设置", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",}, {max: 64,message: "最多只能录入64个字符",trigger: "blur",},
......
...@@ -176,6 +176,7 @@ ...@@ -176,6 +176,7 @@
{label: "职位", prop: "userPost"}, {label: "职位", prop: "userPost"},
{label: "电话", prop: "phone"}, {label: "电话", prop: "phone"},
{label: "手机", prop: "mobile"},
{label: "工作状态", prop: "workStatus"}, {label: "工作状态", prop: "workStatus"},
......
package com.mortals.xhx.module.device.service.impl; package com.mortals.xhx.module.device.service.impl;
import com.mortals.framework.common.Rest;
import com.mortals.xhx.common.pdu.LoginForm;
import com.mortals.xhx.common.pdu.device.DeviceReq;
import com.mortals.xhx.feign.device.IDeviceFeign;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
...@@ -7,24 +14,35 @@ import com.mortals.xhx.module.device.dao.DeviceDao; ...@@ -7,24 +14,35 @@ import com.mortals.xhx.module.device.dao.DeviceDao;
import com.mortals.xhx.module.device.model.DeviceEntity; import com.mortals.xhx.module.device.model.DeviceEntity;
import com.mortals.xhx.module.device.service.DeviceService; import com.mortals.xhx.module.device.service.DeviceService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
/** /**
* DeviceService * DeviceService
* 设备管理 service实现 * 设备管理 service实现
* *
* @author zxfei * @author zxfei
* @date 2023-05-22 * @date 2023-05-22
*/ */
@Service("deviceService") @Service("deviceService")
@Slf4j @Slf4j
public class DeviceServiceImpl extends AbstractCRUDServiceImpl<DeviceDao, DeviceEntity, Long> implements DeviceService { public class DeviceServiceImpl extends AbstractCRUDServiceImpl<DeviceDao, DeviceEntity, Long> implements DeviceService {
@Autowired
private IDeviceFeign deviceFeign;
@Override @Override
protected void saveAfter(DeviceEntity entity, Context context) throws AppException { protected void saveAfter(DeviceEntity entity, Context context) throws AppException {
super.saveAfter(entity, context); super.saveAfter(entity, context);
//todo 通知设备管理系统 //todo 通知设备管理系统
String token = getToken();
DeviceReq deviceReq = new DeviceReq();
deviceReq.setReceiveMethod(1);
deviceFeign.deviceCall(deviceReq,token);
} }
@Override @Override
protected void updateAfter(DeviceEntity entity, Context context) throws AppException { protected void updateAfter(DeviceEntity entity, Context context) throws AppException {
super.updateAfter(entity, context); super.updateAfter(entity, context);
...@@ -40,4 +58,13 @@ public class DeviceServiceImpl extends AbstractCRUDServiceImpl<DeviceDao, Device ...@@ -40,4 +58,13 @@ public class DeviceServiceImpl extends AbstractCRUDServiceImpl<DeviceDao, Device
public void deviceEnabled(Long id, Integer status, Context context) { public void deviceEnabled(Long id, Integer status, Context context) {
} }
private String getToken() {
LoginForm loginForm = new LoginForm();
loginForm.setLoginName("admin");
loginForm.setPassword("xhx@yb123");
Rest<String> rest = deviceFeign.getToken(loginForm);
String token = rest.getData();
return token;
}
} }
\ No newline at end of file
...@@ -56,8 +56,6 @@ public class DeviceController extends BaseCRUDJsonBodyMappingController<DeviceSe ...@@ -56,8 +56,6 @@ public class DeviceController extends BaseCRUDJsonBodyMappingController<DeviceSe
this.addDict(model, "deviceInFloor", paramService.getParamBySecondOrganize("Device","deviceInFloor")); this.addDict(model, "deviceInFloor", paramService.getParamBySecondOrganize("Device","deviceInFloor"));
this.addDict(model, "deviceStatus", paramService.getParamBySecondOrganize("Device","deviceStatus")); this.addDict(model, "deviceStatus", paramService.getParamBySecondOrganize("Device","deviceStatus"));
this.addDict(model, "enabled", paramService.getParamBySecondOrganize("Device","enabled")); this.addDict(model, "enabled", paramService.getParamBySecondOrganize("Device","enabled"));
this.addDict(model, "roomId", roomService.find(new RoomQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getRoomName(), (o, n) -> n))); this.addDict(model, "roomId", roomService.find(new RoomQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getRoomName(), (o, n) -> n)));
super.init(model, context); super.init(model, context);
......
...@@ -22,4 +22,6 @@ public class MettingRecordVo extends BaseEntityLong { ...@@ -22,4 +22,6 @@ public class MettingRecordVo extends BaseEntityLong {
/** 结束 会议日期 */ /** 结束 会议日期 */
private String meetDateEnd; private String meetDateEnd;
private String deviceCode;
} }
\ No newline at end of file
...@@ -7,8 +7,10 @@ import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; ...@@ -7,8 +7,10 @@ import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService; import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.module.metting.model.MettingRecordEntity; import com.mortals.xhx.module.metting.model.MettingRecordEntity;
import com.mortals.xhx.module.metting.service.MettingRecordService; import com.mortals.xhx.module.metting.service.MettingRecordService;
import com.mortals.xhx.module.room.model.RoomEntity;
import com.mortals.xhx.module.room.model.RoomQuery; import com.mortals.xhx.module.room.model.RoomQuery;
import com.mortals.xhx.module.room.service.RoomService; import com.mortals.xhx.module.room.service.RoomService;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -51,5 +53,13 @@ public class MettingRecordController extends BaseCRUDJsonBodyMappingController<M ...@@ -51,5 +53,13 @@ public class MettingRecordController extends BaseCRUDJsonBodyMappingController<M
protected void doListBefore(MettingRecordEntity query, Map<String, Object> model, Context context) throws AppException { protected void doListBefore(MettingRecordEntity query, Map<String, Object> model, Context context) throws AppException {
super.doListBefore(query, model, context); super.doListBefore(query, model, context);
query.setOrderColList(Arrays.asList(new OrderCol("createTime", OrderCol.DESCENDING))); query.setOrderColList(Arrays.asList(new OrderCol("createTime", OrderCol.DESCENDING)));
if (!ObjectUtils.isEmpty(query.getDeviceCode())) {
//根据设备编码 查询房间room
RoomEntity roomEntity = roomService.selectOne(new RoomQuery().deviceCode(query.getDeviceCode()));
if (!ObjectUtils.isEmpty(roomEntity)) {
query.setRoomId(roomEntity.getId());
}
}
} }
} }
\ No newline at end of file
package com.mortals.xhx.module.room.model; package com.mortals.xhx.module.room.model;
import java.util.List; import java.util.List;
import java.util.ArrayList; import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel; import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong; import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.room.model.vo.RoomVo; import com.mortals.xhx.module.room.model.vo.RoomVo;
import lombok.Data; import lombok.Data;
/** /**
* 房间管理实体对象 * 房间管理实体对象
* *
* @author zxfei * @author zxfei
* @date 2023-05-22 * @date 2023-05-25
*/ */
@Data @Data
public class RoomEntity extends RoomVo { public class RoomEntity extends RoomVo {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 房间名称 * 房间名称
*/ */
private String roomName; private String roomName;
/** /**
* 房间编码 * 房间编码
*/ */
private String roomCode; private String roomCode;
/** /**
* 房间类型(0.会议室,1.办公室) * 房间类型(0.会议室,1.办公室)
*/ */
private Integer roomType; private Integer roomType;
/** /**
* 绑定的电子门牌的设备ID * 绑定的电子门牌的设备ID
*/ */
private Long deviceId; private Long deviceId;
/** /**
* 绑定的设备名称 * 绑定的设备名称
*/ */
private String deviceName; private String deviceName;
/** /**
* 员工人数 * 员工人数
*/ */
private Long countPerson; private Long countPerson;
/** /**
* 备注 * 备注
*/ */
private String remark; private String remark;
/**
* 绑定的设备编码
*/
private String deviceCode;
@Override @Override
public int hashCode() { public int hashCode() {
return this.getId().hashCode(); return this.getId().hashCode();
} }
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
if (obj == null) return false; if (obj == null) return false;
if (obj instanceof RoomEntity) { if (obj instanceof RoomEntity) {
RoomEntity tmp = (RoomEntity) obj; RoomEntity tmp = (RoomEntity) obj;
if (this.getId() == tmp.getId()) { if (this.getId() == tmp.getId()) {
return true; return true;
} }
} }
return false; return false;
} }
public void initAttrValue(){ public void initAttrValue() {
this.roomName = "";
this.roomName = ""; this.roomCode = "";
this.roomCode = ""; this.roomType = 0;
this.roomType = 0; this.deviceId = null;
this.deviceId = null; this.deviceName = "";
this.deviceCode = "";
this.deviceName = ""; this.countPerson = 0L;
this.countPerson = 0L; this.remark = "";
this.remark = ""; this.deviceCode = "";
} }
} }
\ No newline at end of file
package com.mortals.xhx.module.room.service.impl; package com.mortals.xhx.module.room.service.impl;
import com.mortals.xhx.module.device.model.DeviceEntity;
import com.mortals.xhx.module.device.service.DeviceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
...@@ -7,6 +10,8 @@ import com.mortals.xhx.module.room.dao.RoomDao; ...@@ -7,6 +10,8 @@ import com.mortals.xhx.module.room.dao.RoomDao;
import com.mortals.xhx.module.room.model.RoomEntity; import com.mortals.xhx.module.room.model.RoomEntity;
import com.mortals.xhx.module.room.service.RoomService; import com.mortals.xhx.module.room.service.RoomService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ObjectUtils;
/** /**
* RoomService * RoomService
* 房间管理 service实现 * 房间管理 service实现
...@@ -17,5 +22,20 @@ import lombok.extern.slf4j.Slf4j; ...@@ -17,5 +22,20 @@ import lombok.extern.slf4j.Slf4j;
@Service("roomService") @Service("roomService")
@Slf4j @Slf4j
public class RoomServiceImpl extends AbstractCRUDServiceImpl<RoomDao, RoomEntity, Long> implements RoomService { public class RoomServiceImpl extends AbstractCRUDServiceImpl<RoomDao, RoomEntity, Long> implements RoomService {
@Autowired
private DeviceService deviceService;
@Override
protected void validData(RoomEntity entity, Context context) throws AppException {
super.validData(entity, context);
if(!ObjectUtils.isEmpty(entity.getDeviceId())){
DeviceEntity deviceEntity = deviceService.get(entity.getDeviceId(), context);
if(!ObjectUtils.isEmpty(deviceEntity)){
entity.setDeviceCode(deviceEntity.getDeviceCode());
entity.setDeviceName(deviceEntity.getDeviceName());
}
}
}
} }
\ No newline at end of file
...@@ -7,62 +7,70 @@ import com.mortals.framework.model.BaseEntityLong; ...@@ -7,62 +7,70 @@ import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.workman.model.vo.WorkmanVo; import com.mortals.xhx.module.workman.model.vo.WorkmanVo;
import lombok.Data; import lombok.Data;
/** /**
* 工作人员实体对象 * 工作人员实体对象
* *
* @author zxfei * @author zxfei
* @date 2023-05-22 * @date 2023-05-25
*/ */
@Data @Data
public class WorkmanEntity extends WorkmanVo { public class WorkmanEntity extends WorkmanVo {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 所属房间id * 所属房间id
*/ */
private Long roomId; private Long roomId;
/** /**
* 所属房间名称 * 所属房间名称
*/ */
private String roomName; private String roomName;
/** /**
* 所属部门 * 所属部门
*/ */
private String deptName; private String deptName;
/** /**
* 姓名 * 姓名
*/ */
private String name; private String name;
/** /**
* 性别(0.男,1.女) * 性别(0.男,1.女)
*/ */
private Integer sex; private Integer sex;
/** /**
* 职务 * 职务
*/ */
private String userPost; private String userPost;
/** /**
* 电话 * 电话
*/ */
private String phone; private String phone;
/** /**
* 手机 * 手机
*/ */
private String mobile; private String mobile;
/** /**
* 简介 * 简介
*/ */
private String summary; private String summary;
/** /**
* 照片 * 照片
*/ */
private String photoPath; private String photoPath;
/** /**
* 工作状态,来源基础设置 * 工作状态,来源基础设置
*/ */
private String workStatus; private String workStatus;
/**
* 登录用户名
*/
private String loginName;
/**
* 密码
*/
private String loginPwd;
@Override @Override
public int hashCode() { public int hashCode() {
return this.getId().hashCode(); return this.getId().hashCode();
} }
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
...@@ -70,7 +78,7 @@ public class WorkmanEntity extends WorkmanVo { ...@@ -70,7 +78,7 @@ public class WorkmanEntity extends WorkmanVo {
if (obj instanceof WorkmanEntity) { if (obj instanceof WorkmanEntity) {
WorkmanEntity tmp = (WorkmanEntity) obj; WorkmanEntity tmp = (WorkmanEntity) obj;
if (this.getId() == tmp.getId()) { if (this.getId() == tmp.getId()) {
return true; return true;
} }
} }
return false; return false;
...@@ -78,26 +86,30 @@ public class WorkmanEntity extends WorkmanVo { ...@@ -78,26 +86,30 @@ public class WorkmanEntity extends WorkmanVo {
public void initAttrValue(){ public void initAttrValue(){
this.roomId = -1L; this.roomId = null;
this.roomName = "";
this.deptName = "";
this.roomName = ""; this.name = "";
this.deptName = ""; this.sex = 0;
this.name = ""; this.userPost = "";
this.sex = 0; this.phone = "";
this.userPost = ""; this.mobile = "";
this.phone = ""; this.summary = "";
this.mobile = ""; this.photoPath = "";
this.summary = ""; this.workStatus = "";
this.photoPath = ""; this.loginName = "";
this.workStatus = ""; this.loginPwd = "";
} }
} }
\ No newline at end of file
...@@ -19,15 +19,6 @@ public class WorkmanVo extends BaseEntityLong { ...@@ -19,15 +19,6 @@ public class WorkmanVo extends BaseEntityLong {
private String oldPwd; private String oldPwd;
private String newPwd; private String newPwd;
/** private String deviceCode;
* 登录用户名
*/
@Excel(name = "用户名")
private String loginName;
/**
* 密码
*/
@Excel(name = "密码")
private String loginPwd;
} }
\ No newline at end of file
...@@ -2,6 +2,7 @@ package com.mortals.xhx.module.workman.service.impl; ...@@ -2,6 +2,7 @@ package com.mortals.xhx.module.workman.service.impl;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.util.SecurityUtil; import com.mortals.framework.util.SecurityUtil;
import com.mortals.framework.util.StringUtils;
import com.mortals.xhx.module.gocome.model.GocomeRecordEntity; import com.mortals.xhx.module.gocome.model.GocomeRecordEntity;
import com.mortals.xhx.module.gocome.service.GocomeRecordService; import com.mortals.xhx.module.gocome.service.GocomeRecordService;
import com.mortals.xhx.module.room.model.RoomQuery; import com.mortals.xhx.module.room.model.RoomQuery;
...@@ -37,6 +38,25 @@ public class WorkmanServiceImpl extends AbstractCRUDServiceImpl<WorkmanDao, Work ...@@ -37,6 +38,25 @@ public class WorkmanServiceImpl extends AbstractCRUDServiceImpl<WorkmanDao, Work
private RoomService roomService; private RoomService roomService;
@Override
protected void saveBefore(WorkmanEntity entity, Context context) throws AppException {
super.saveBefore(entity, context);
if (StringUtils.isNotEmpty(entity.getLoginPwd())) {
try {
entity.setLoginPwd(SecurityUtil.md5DoubleEncoding(entity.getLoginPwd()));
} catch (Exception e) {
throw new AppException("密码转换异常");
}
} else {
entity.setLoginPwd(null);
}
WorkmanEntity workmanEntity = this.selectOne(new WorkmanQuery().loginName(entity.getLoginName()));
if(!ObjectUtils.isEmpty(workmanEntity)){
throw new AppException("当前登录用户名已存在!");
}
}
@Override @Override
protected void saveAfter(WorkmanEntity entity, Context context) throws AppException { protected void saveAfter(WorkmanEntity entity, Context context) throws AppException {
super.saveAfter(entity, context); super.saveAfter(entity, context);
...@@ -64,9 +84,6 @@ public class WorkmanServiceImpl extends AbstractCRUDServiceImpl<WorkmanDao, Work ...@@ -64,9 +84,6 @@ public class WorkmanServiceImpl extends AbstractCRUDServiceImpl<WorkmanDao, Work
} catch (Exception e) { } catch (Exception e) {
throw new AppException("密码验认出错!", e); throw new AppException("密码验认出错!", e);
} }
// WorkmanEntity update = new WorkmanEntity();
// update.setId(workmanEntity.getId());
// this.dao.update(update);
return workmanEntity; return workmanEntity;
} }
...@@ -146,7 +163,12 @@ public class WorkmanServiceImpl extends AbstractCRUDServiceImpl<WorkmanDao, Work ...@@ -146,7 +163,12 @@ public class WorkmanServiceImpl extends AbstractCRUDServiceImpl<WorkmanDao, Work
recordEntity.setCreateUserId(this.getContextUserId(context)); recordEntity.setCreateUserId(this.getContextUserId(context));
gocomeRecordService.save(recordEntity, context); gocomeRecordService.save(recordEntity, context);
return Rest.ok(); return Rest.ok();
} }
@Override
protected void removeAfter(Long[] ids, Context context, int result) throws AppException {
super.removeAfter(ids, context, result);
}
} }
\ No newline at end of file
package com.mortals.xhx.module.workman.web; package com.mortals.xhx.module.workman.web;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.mortals.framework.annotation.UnAuth; import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
...@@ -8,16 +9,20 @@ import com.mortals.xhx.base.system.param.service.ParamService; ...@@ -8,16 +9,20 @@ import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.module.basic.model.BasicStatusQuery; import com.mortals.xhx.module.basic.model.BasicStatusQuery;
import com.mortals.xhx.module.basic.service.BasicStatusService; import com.mortals.xhx.module.basic.service.BasicStatusService;
import com.mortals.xhx.module.device.model.DeviceEntity; import com.mortals.xhx.module.device.model.DeviceEntity;
import com.mortals.xhx.module.room.model.RoomEntity;
import com.mortals.xhx.module.room.model.RoomQuery; import com.mortals.xhx.module.room.model.RoomQuery;
import com.mortals.xhx.module.room.service.RoomService; import com.mortals.xhx.module.room.service.RoomService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.workman.model.WorkmanEntity; import com.mortals.xhx.module.workman.model.WorkmanEntity;
import com.mortals.xhx.module.workman.service.WorkmanService; import com.mortals.xhx.module.workman.service.WorkmanService;
...@@ -26,21 +31,23 @@ import com.mortals.framework.util.StringUtils; ...@@ -26,21 +31,23 @@ import com.mortals.framework.util.StringUtils;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*; import static com.mortals.framework.ap.SysConstains.*;
/** /**
* * 工作人员
* 工作人员 *
* * @author zxfei
* @author zxfei * @date 2023-05-22
* @date 2023-05-22 */
*/
@RestController @RestController
@RequestMapping("workman") @RequestMapping("workman")
@Slf4j @Slf4j
public class WorkmanController extends BaseCRUDJsonBodyMappingController<WorkmanService,WorkmanEntity,Long> { public class WorkmanController extends BaseCRUDJsonBodyMappingController<WorkmanService, WorkmanEntity, Long> {
@Autowired @Autowired
private ParamService paramService; private ParamService paramService;
...@@ -50,32 +57,46 @@ public class WorkmanController extends BaseCRUDJsonBodyMappingController<Workman ...@@ -50,32 +57,46 @@ public class WorkmanController extends BaseCRUDJsonBodyMappingController<Workman
private BasicStatusService statusService; private BasicStatusService statusService;
public WorkmanController(){ public WorkmanController() {
super.setModuleDesc( "工作人员"); super.setModuleDesc("工作人员");
} }
@Override @Override
protected void init(Map<String, Object> model, Context context) { protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "sex", paramService.getParamBySecondOrganize("Workman","sex")); this.addDict(model, "sex", paramService.getParamBySecondOrganize("Workman", "sex"));
this.addDict(model, "roomId", roomService.find(new RoomQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getRoomName(), (o, n) -> n))); this.addDict(model, "roomId", roomService.find(new RoomQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getRoomName(), (o, n) -> n)));
this.addDict(model, "workStatus", statusService.find(new BasicStatusQuery()).stream().collect(Collectors.toMap(x -> x.getStatusName(), y -> y.getStatusName(), (o, n) -> n))); this.addDict(model, "workStatus", statusService.find(new BasicStatusQuery()).stream().collect(Collectors.toMap(x -> x.getStatusName(), y -> y.getStatusName(), (o, n) -> n)));
super.init(model, context); super.init(model, context);
} }
@Override
protected void doListBefore(WorkmanEntity query, Map<String, Object> model, Context context) throws AppException {
super.doListBefore(query, model, context);
if (!ObjectUtils.isEmpty(query.getDeviceCode())) {
//根据设备编码 查询房间room
RoomEntity roomEntity = roomService.selectOne(new RoomQuery().deviceCode(query.getDeviceCode()));
if (!ObjectUtils.isEmpty(roomEntity)) {
query.setRoomId(roomEntity.getId());
}
}
}
/** /**
* 工作人员更新状态 * 工作人员更新状态
*/ */
@PostMapping(value = "change/status") @PostMapping(value = "change/status")
@UnAuth
public Rest<Void> changeStatus(@RequestBody WorkmanEntity workmanEntity) { public Rest<Void> changeStatus(@RequestBody WorkmanEntity workmanEntity) {
String busiDesc = this.getModuleDesc() + "设备激活"; String busiDesc = this.getModuleDesc() + "更新状态";
Rest<Void> rest = Rest.ok(busiDesc + " 【成功】"); Rest<Void> rest = Rest.ok(busiDesc + " 【成功】");
try { try {
this.service.changeStatus(workmanEntity, getContext()); this.service.changeStatus(workmanEntity, getContext());
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) { } catch (Exception e) {
log.error("设备激活消息", e); log.error("工作人员更新状态消息", e);
rest = Rest.fail(super.convertException(e)); rest = Rest.fail(super.convertException(e));
} }
return rest; return rest;
...@@ -93,7 +114,6 @@ public class WorkmanController extends BaseCRUDJsonBodyMappingController<Workman ...@@ -93,7 +114,6 @@ public class WorkmanController extends BaseCRUDJsonBodyMappingController<Workman
try { try {
String ip = super.getRequestIP(request); String ip = super.getRequestIP(request);
WorkmanEntity workmanEntity = this.service.doLogin(query.getLoginName(), query.getLoginPwd(), ip); WorkmanEntity workmanEntity = this.service.doLogin(query.getLoginName(), query.getLoginPwd(), ip);
this.service.getDao().update(workmanEntity);
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
ret.put(KEY_RESULT_MSG, "工作人员登录成功!"); ret.put(KEY_RESULT_MSG, "工作人员登录成功!");
ret.put(KEY_RESULT_DATA, workmanEntity); ret.put(KEY_RESULT_DATA, workmanEntity);
...@@ -149,5 +169,18 @@ public class WorkmanController extends BaseCRUDJsonBodyMappingController<Workman ...@@ -149,5 +169,18 @@ public class WorkmanController extends BaseCRUDJsonBodyMappingController<Workman
} }
@Override
protected void deleteBefore(Long[] ids, Context context) throws AppException {
super.deleteBefore(ids, context);
List<WorkmanEntity> workmanEntities = this.service.get(ids, context);
for (WorkmanEntity workmanEntity : workmanEntities) {
RoomQuery roomQuery = new RoomQuery();
roomQuery.setId(workmanEntity.getRoomId());
RoomEntity roomEntity = roomService.selectOne(roomQuery, context);
if(!ObjectUtils.isEmpty(roomEntity)){
roomEntity.setCountPerson(roomEntity.getCountPerson()-1);
roomService.update(roomEntity);
}
}
}
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment