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

修改同步用户

parent 483058fb
No related merge requests found
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;
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.device.DevicePdu;
import com.mortals.xhx.common.pdu.device.DeviceReq;
import com.mortals.xhx.feign.IFeign;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
......@@ -11,8 +13,10 @@ import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 设备 Feign接口
*
* @author zxfei
* @date 2023-02-25
*/
......@@ -47,9 +51,28 @@ public interface IDeviceFeign extends IFeign {
* @return
*/
@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);
}
......@@ -73,6 +96,16 @@ class DeviceFeignFallbackFactory implements FallbackFactory<IDeviceFeign> {
public Rest<RespData<DevicePdu>> save(DevicePdu devicePdu, String authorization) {
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(
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
`deviceCode` varchar(64) COMMENT '绑定的设备编码',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='房间管理';
-- ----------------------------
-- 房间工作人员信息表
-- ----------------------------
......@@ -96,8 +98,11 @@ CREATE TABLE mortals_xhx_workman(
`createTime` datetime COMMENT '创建时间',
`createUserId` bigint(20) COMMENT '创建用户',
`updateTime` datetime COMMENT '修改时间',
`loginName` varchar(64) COMMENT '登录用户名',
`loginPwd` varchar(64) COMMENT '密码',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='工作人员';
-- ----------------------------
-- 设备管理表
-- ----------------------------
......
......@@ -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
......@@ -2382,16 +2450,19 @@ msg|String|消息|-
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
page|Integer|否|当前页
size|Integer|否|每页条数,值为-1,查询所有记录
参数名称| 类型 |必填|描述
:---|:--------|:---|:------
page| Integer |否|当前页
size| Integer |否|每页条数,值为-1,查询所有记录
deviceCode| String |否|设备编码
**请求样例:**
```
{
"page":1,
"size":10
"size":10,
"deviceCode":"123123"
}
```
......@@ -2515,12 +2586,14 @@ data| object |数据对象
:---|:---|:---|:------
page|Integer|否|当前页
size|Integer|否|每页条数,值为-1,查询所有记录
deviceCode| String |否|设备编码
**请求样例:**
```
{
"page":1,
"size":10
"size":10,
"deviceCode","adfdd"
}
```
......
No preview for this file type
......@@ -7,8 +7,10 @@
size="50%">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<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="name" v-model="form.name" placeholder="请输入姓名"/>
<Field :span="20" label="性别" prop="sex" v-model="form.sex" type="select" :enumData="dict.sex" placeholder="请选择性别"/>
......@@ -62,6 +64,22 @@
],
// 表单校验
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: [
{required: true,message: "请输入工作状态,来源基础设置", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
......
......@@ -176,6 +176,7 @@
{label: "职位", prop: "userPost"},
{label: "电话", prop: "phone"},
{label: "手机", prop: "mobile"},
{label: "工作状态", prop: "workStatus"},
......
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 com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
......@@ -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.service.DeviceService;
import lombok.extern.slf4j.Slf4j;
/**
* DeviceService
* 设备管理 service实现
*
* @author zxfei
* @date 2023-05-22
*/
* DeviceService
* 设备管理 service实现
*
* @author zxfei
* @date 2023-05-22
*/
@Service("deviceService")
@Slf4j
public class DeviceServiceImpl extends AbstractCRUDServiceImpl<DeviceDao, DeviceEntity, Long> implements DeviceService {
@Autowired
private IDeviceFeign deviceFeign;
@Override
protected void saveAfter(DeviceEntity entity, Context context) throws AppException {
super.saveAfter(entity, context);
//todo 通知设备管理系统
String token = getToken();
DeviceReq deviceReq = new DeviceReq();
deviceReq.setReceiveMethod(1);
deviceFeign.deviceCall(deviceReq,token);
}
@Override
protected void updateAfter(DeviceEntity entity, Context context) throws AppException {
super.updateAfter(entity, context);
......@@ -40,4 +58,13 @@ public class DeviceServiceImpl extends AbstractCRUDServiceImpl<DeviceDao, Device
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
this.addDict(model, "deviceInFloor", paramService.getParamBySecondOrganize("Device","deviceInFloor"));
this.addDict(model, "deviceStatus", paramService.getParamBySecondOrganize("Device","deviceStatus"));
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)));
super.init(model, context);
......
......@@ -22,4 +22,6 @@ public class MettingRecordVo extends BaseEntityLong {
/** 结束 会议日期 */
private String meetDateEnd;
private String deviceCode;
}
\ No newline at end of file
......@@ -7,8 +7,10 @@ import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.module.metting.model.MettingRecordEntity;
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.service.RoomService;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -51,5 +53,13 @@ public class MettingRecordController extends BaseCRUDJsonBodyMappingController<M
protected void doListBefore(MettingRecordEntity query, Map<String, Object> model, Context context) throws AppException {
super.doListBefore(query, model, context);
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;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.room.model.vo.RoomVo;
import lombok.Data;
/**
* 房间管理实体对象
*
* @author zxfei
* @date 2023-05-22
*/
* 房间管理实体对象
*
* @author zxfei
* @date 2023-05-25
*/
@Data
public class RoomEntity extends RoomVo {
private static final long serialVersionUID = 1L;
......@@ -44,10 +47,16 @@ public class RoomEntity extends RoomVo {
* 备注
*/
private String remark;
/**
* 绑定的设备编码
*/
private String deviceCode;
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
......@@ -60,7 +69,7 @@ public class RoomEntity extends RoomVo {
return false;
}
public void initAttrValue(){
public void initAttrValue() {
this.roomName = "";
......@@ -71,9 +80,12 @@ public class RoomEntity extends RoomVo {
this.deviceId = null;
this.deviceName = "";
this.deviceCode = "";
this.countPerson = 0L;
this.remark = "";
this.deviceCode = "";
}
}
\ No newline at end of file
......@@ -3,11 +3,11 @@ package com.mortals.xhx.module.room.model;
import java.util.List;
import com.mortals.xhx.module.room.model.RoomEntity;
/**
* 房间管理查询对象
*
* @author zxfei
* @date 2023-05-22
*/
* 房间管理查询对象
*
* @author zxfei
* @date 2023-05-25
*/
public class RoomQuery extends RoomEntity {
/** 开始 主键ID,主键,自增长 */
private Long idStart;
......@@ -131,6 +131,11 @@ public class RoomQuery extends RoomEntity {
/** 结束 更新时间 */
private String updateTimeEnd;
/** 绑定的设备编码 */
private List<String> deviceCodeList;
/** 绑定的设备编码排除列表 */
private List <String> deviceCodeNotList;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<RoomQuery> orConditionList;
......@@ -817,6 +822,38 @@ public class RoomQuery extends RoomEntity {
this.updateTimeEnd = updateTimeEnd;
}
/**
* 获取 绑定的设备编码
* @return deviceCodeList
*/
public List<String> getDeviceCodeList(){
return this.deviceCodeList;
}
/**
* 设置 绑定的设备编码
* @param deviceCodeList
*/
public void setDeviceCodeList(List<String> deviceCodeList){
this.deviceCodeList = deviceCodeList;
}
/**
* 获取 绑定的设备编码
* @return deviceCodeNotList
*/
public List<String> getDeviceCodeNotList(){
return this.deviceCodeNotList;
}
/**
* 设置 绑定的设备编码
* @param deviceCodeNotList
*/
public void setDeviceCodeNotList(List<String> deviceCodeNotList){
this.deviceCodeNotList = deviceCodeNotList;
}
/**
* 设置 主键ID,主键,自增长
* @param id
......@@ -1219,6 +1256,25 @@ public class RoomQuery extends RoomEntity {
}
/**
* 设置 绑定的设备编码
* @param deviceCode
*/
public RoomQuery deviceCode(String deviceCode){
setDeviceCode(deviceCode);
return this;
}
/**
* 设置 绑定的设备编码
* @param deviceCodeList
*/
public RoomQuery deviceCodeList(List<String> deviceCodeList){
this.deviceCodeList = deviceCodeList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
......
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 com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
......@@ -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.service.RoomService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ObjectUtils;
/**
* RoomService
* 房间管理 service实现
......@@ -18,4 +23,19 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
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,11 +7,11 @@ import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.workman.model.vo.WorkmanVo;
import lombok.Data;
/**
* 工作人员实体对象
*
* @author zxfei
* @date 2023-05-22
*/
* 工作人员实体对象
*
* @author zxfei
* @date 2023-05-25
*/
@Data
public class WorkmanEntity extends WorkmanVo {
private static final long serialVersionUID = 1L;
......@@ -60,6 +60,14 @@ public class WorkmanEntity extends WorkmanVo {
* 工作状态,来源基础设置
*/
private String workStatus;
/**
* 登录用户名
*/
private String loginName;
/**
* 密码
*/
private String loginPwd;
@Override
public int hashCode() {
return this.getId().hashCode();
......@@ -78,7 +86,7 @@ public class WorkmanEntity extends WorkmanVo {
public void initAttrValue(){
this.roomId = -1L;
this.roomId = null;
this.roomName = "";
......@@ -99,5 +107,9 @@ public class WorkmanEntity extends WorkmanVo {
this.photoPath = "";
this.workStatus = "";
this.loginName = "";
this.loginPwd = "";
}
}
\ No newline at end of file
......@@ -3,11 +3,11 @@ package com.mortals.xhx.module.workman.model;
import java.util.List;
import com.mortals.xhx.module.workman.model.WorkmanEntity;
/**
* 工作人员查询对象
*
* @author zxfei
* @date 2023-05-22
*/
* 工作人员查询对象
*
* @author zxfei
* @date 2023-05-25
*/
public class WorkmanQuery extends WorkmanEntity {
/** 开始 序号,主键,自增长 */
private Long idStart;
......@@ -126,6 +126,16 @@ public class WorkmanQuery extends WorkmanEntity {
/** 结束 修改时间 */
private String updateTimeEnd;
/** 登录用户名 */
private List<String> loginNameList;
/** 登录用户名排除列表 */
private List <String> loginNameNotList;
/** 密码 */
private List<String> loginPwdList;
/** 密码排除列表 */
private List <String> loginPwdNotList;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<WorkmanQuery> orConditionList;
......@@ -810,6 +820,70 @@ public class WorkmanQuery extends WorkmanEntity {
this.updateTimeEnd = updateTimeEnd;
}
/**
* 获取 登录用户名
* @return loginNameList
*/
public List<String> getLoginNameList(){
return this.loginNameList;
}
/**
* 设置 登录用户名
* @param loginNameList
*/
public void setLoginNameList(List<String> loginNameList){
this.loginNameList = loginNameList;
}
/**
* 获取 登录用户名
* @return loginNameNotList
*/
public List<String> getLoginNameNotList(){
return this.loginNameNotList;
}
/**
* 设置 登录用户名
* @param loginNameNotList
*/
public void setLoginNameNotList(List<String> loginNameNotList){
this.loginNameNotList = loginNameNotList;
}
/**
* 获取 密码
* @return loginPwdList
*/
public List<String> getLoginPwdList(){
return this.loginPwdList;
}
/**
* 设置 密码
* @param loginPwdList
*/
public void setLoginPwdList(List<String> loginPwdList){
this.loginPwdList = loginPwdList;
}
/**
* 获取 密码
* @return loginPwdNotList
*/
public List<String> getLoginPwdNotList(){
return this.loginPwdNotList;
}
/**
* 设置 密码
* @param loginPwdNotList
*/
public void setLoginPwdNotList(List<String> loginPwdNotList){
this.loginPwdNotList = loginPwdNotList;
}
/**
* 设置 序号,主键,自增长
* @param id
......@@ -1199,6 +1273,44 @@ public class WorkmanQuery extends WorkmanEntity {
}
/**
* 设置 登录用户名
* @param loginName
*/
public WorkmanQuery loginName(String loginName){
setLoginName(loginName);
return this;
}
/**
* 设置 登录用户名
* @param loginNameList
*/
public WorkmanQuery loginNameList(List<String> loginNameList){
this.loginNameList = loginNameList;
return this;
}
/**
* 设置 密码
* @param loginPwd
*/
public WorkmanQuery loginPwd(String loginPwd){
setLoginPwd(loginPwd);
return this;
}
/**
* 设置 密码
* @param loginPwdList
*/
public WorkmanQuery loginPwdList(List<String> loginPwdList){
this.loginPwdList = loginPwdList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
......
......@@ -19,15 +19,6 @@ public class WorkmanVo extends BaseEntityLong {
private String oldPwd;
private String newPwd;
/**
* 登录用户名
*/
@Excel(name = "用户名")
private String loginName;
/**
* 密码
*/
@Excel(name = "密码")
private String loginPwd;
private String deviceCode;
}
\ No newline at end of file
......@@ -2,6 +2,7 @@ package com.mortals.xhx.module.workman.service.impl;
import com.mortals.framework.common.Rest;
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.service.GocomeRecordService;
import com.mortals.xhx.module.room.model.RoomQuery;
......@@ -37,6 +38,25 @@ public class WorkmanServiceImpl extends AbstractCRUDServiceImpl<WorkmanDao, Work
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
protected void saveAfter(WorkmanEntity entity, Context context) throws AppException {
super.saveAfter(entity, context);
......@@ -64,9 +84,6 @@ public class WorkmanServiceImpl extends AbstractCRUDServiceImpl<WorkmanDao, Work
} catch (Exception e) {
throw new AppException("密码验认出错!", e);
}
// WorkmanEntity update = new WorkmanEntity();
// update.setId(workmanEntity.getId());
// this.dao.update(update);
return workmanEntity;
}
......@@ -146,7 +163,12 @@ public class WorkmanServiceImpl extends AbstractCRUDServiceImpl<WorkmanDao, Work
recordEntity.setCreateUserId(this.getContextUserId(context));
gocomeRecordService.save(recordEntity, context);
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;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.Rest;
......@@ -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.service.BasicStatusService;
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.service.RoomService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.workman.model.WorkmanEntity;
import com.mortals.xhx.module.workman.service.WorkmanService;
......@@ -26,21 +31,23 @@ import com.mortals.framework.util.StringUtils;
import java.util.*;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
*
* 工作人员
*
* @author zxfei
* @date 2023-05-22
*/
* 工作人员
*
* @author zxfei
* @date 2023-05-22
*/
@RestController
@RequestMapping("workman")
@Slf4j
public class WorkmanController extends BaseCRUDJsonBodyMappingController<WorkmanService,WorkmanEntity,Long> {
public class WorkmanController extends BaseCRUDJsonBodyMappingController<WorkmanService, WorkmanEntity, Long> {
@Autowired
private ParamService paramService;
......@@ -50,32 +57,46 @@ public class WorkmanController extends BaseCRUDJsonBodyMappingController<Workman
private BasicStatusService statusService;
public WorkmanController(){
super.setModuleDesc( "工作人员");
public WorkmanController() {
super.setModuleDesc("工作人员");
}
@Override
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, "workStatus", statusService.find(new BasicStatusQuery()).stream().collect(Collectors.toMap(x -> x.getStatusName(), y -> y.getStatusName(), (o, n) -> n)));
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")
@UnAuth
public Rest<Void> changeStatus(@RequestBody WorkmanEntity workmanEntity) {
String busiDesc = this.getModuleDesc() + "设备激活";
String busiDesc = this.getModuleDesc() + "更新状态";
Rest<Void> rest = Rest.ok(busiDesc + " 【成功】");
try {
this.service.changeStatus(workmanEntity, getContext());
recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) {
log.error("设备激活消息", e);
log.error("工作人员更新状态消息", e);
rest = Rest.fail(super.convertException(e));
}
return rest;
......@@ -93,7 +114,6 @@ public class WorkmanController extends BaseCRUDJsonBodyMappingController<Workman
try {
String ip = super.getRequestIP(request);
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_MSG, "工作人员登录成功!");
ret.put(KEY_RESULT_DATA, workmanEntity);
......@@ -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
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"mybatis-3-mapper.dtd">
"mybatis-3-mapper.dtd">
<mapper namespace="com.mortals.xhx.module.room.dao.ibatis.RoomDaoImpl">
<!-- 字段和属性映射 -->
......@@ -17,6 +17,7 @@
<result property="createTime" column="createTime" />
<result property="updateUserId" column="updateUserId" />
<result property="updateTime" column="updateTime" />
<result property="deviceCode" column="deviceCode" />
</resultMap>
......@@ -60,23 +61,26 @@
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('updateTime') or colPickMode == 1 and data.containsKey('updateTime')))">
a.updateTime,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('deviceCode') or colPickMode == 1 and data.containsKey('deviceCode')))">
a.deviceCode,
</if>
</trim>
</sql>
<!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="RoomEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_room
(roomName,roomCode,roomType,deviceId,deviceName,countPerson,remark,createUserId,createTime,updateUserId,updateTime)
(roomName,roomCode,roomType,deviceId,deviceName,countPerson,remark,createUserId,createTime,updateUserId,updateTime,deviceCode)
VALUES
(#{roomName},#{roomCode},#{roomType},#{deviceId},#{deviceName},#{countPerson},#{remark},#{createUserId},#{createTime},#{updateUserId},#{updateTime})
(#{roomName},#{roomCode},#{roomType},#{deviceId},#{deviceName},#{countPerson},#{remark},#{createUserId},#{createTime},#{updateUserId},#{updateTime},#{deviceCode})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_room
(roomName,roomCode,roomType,deviceId,deviceName,countPerson,remark,createUserId,createTime,updateUserId,updateTime)
(roomName,roomCode,roomType,deviceId,deviceName,countPerson,remark,createUserId,createTime,updateUserId,updateTime,deviceCode)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.roomName},#{item.roomCode},#{item.roomType},#{item.deviceId},#{item.deviceName},#{item.countPerson},#{item.remark},#{item.createUserId},#{item.createTime},#{item.updateUserId},#{item.updateTime})
(#{item.roomName},#{item.roomCode},#{item.roomType},#{item.deviceId},#{item.deviceName},#{item.countPerson},#{item.remark},#{item.createUserId},#{item.createTime},#{item.updateUserId},#{item.updateTime},#{item.deviceCode})
</foreach>
</insert>
......@@ -134,6 +138,9 @@
<if test="(colPickMode==0 and data.containsKey('updateTime')) or (colPickMode==1 and !data.containsKey('updateTime'))">
a.updateTime=#{data.updateTime},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceCode')) or (colPickMode==1 and !data.containsKey('deviceCode'))">
a.deviceCode=#{data.deviceCode},
</if>
</trim>
<trim suffixOverrides="where" suffix="">
where
......@@ -248,6 +255,13 @@
</if>
</foreach>
</trim>
<trim prefix="deviceCode=(case" suffix="ELSE deviceCode end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('deviceCode')) or (colPickMode==1 and !item.containsKey('deviceCode'))">
when a.id=#{item.id} then #{item.deviceCode}
</if>
</foreach>
</trim>
</trim>
where id in
<foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")">
......@@ -640,6 +654,27 @@
<if test="conditionParamRef.containsKey('updateTimeEnd') and conditionParamRef.updateTimeEnd != null and conditionParamRef.updateTimeEnd!=''">
${_conditionType_} a.updateTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.updateTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('deviceCode')">
<if test="conditionParamRef.deviceCode != null and conditionParamRef.deviceCode != ''">
${_conditionType_} a.deviceCode like #{${_conditionParam_}.deviceCode}
</if>
<if test="conditionParamRef.deviceCode == null">
${_conditionType_} a.deviceCode is null
</if>
</if>
<if test="conditionParamRef.containsKey('deviceCodeList') and conditionParamRef.deviceCodeList.size() > 0">
${_conditionType_} a.deviceCode in
<foreach collection="conditionParamRef.deviceCodeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('deviceCodeNotList') and conditionParamRef.deviceCodeNotList.size() > 0">
${_conditionType_} a.deviceCode not in
<foreach collection="conditionParamRef.deviceCodeNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
</sql>
<sql id="_orderCols_">
<if test="orderColList != null and !orderColList.isEmpty()">
......@@ -713,6 +748,11 @@
<if test='orderCol.updateTime != null and "DESC".equalsIgnoreCase(orderCol.updateTime)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('deviceCode')">
a.deviceCode
<if test='orderCol.deviceCode != null and "DESC".equalsIgnoreCase(orderCol.deviceCode)'>DESC</if>
,
</if>
</trim>
</if>
</sql>
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"mybatis-3-mapper.dtd">
"mybatis-3-mapper.dtd">
<mapper namespace="com.mortals.xhx.module.workman.dao.ibatis.WorkmanDaoImpl">
<!-- 字段和属性映射 -->
......@@ -20,6 +20,8 @@
<result property="createTime" column="createTime" />
<result property="createUserId" column="createUserId" />
<result property="updateTime" column="updateTime" />
<result property="loginName" column="loginName" />
<result property="loginPwd" column="loginPwd" />
</resultMap>
......@@ -72,23 +74,29 @@
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('updateTime') or colPickMode == 1 and data.containsKey('updateTime')))">
a.updateTime,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('loginName') or colPickMode == 1 and data.containsKey('loginName')))">
a.loginName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('loginPwd') or colPickMode == 1 and data.containsKey('loginPwd')))">
a.loginPwd,
</if>
</trim>
</sql>
<!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="WorkmanEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_workman
(roomId,roomName,deptName,name,sex,userPost,phone,mobile,summary,photoPath,workStatus,createTime,createUserId,updateTime)
(roomId,roomName,deptName,name,sex,userPost,phone,mobile,summary,photoPath,workStatus,createTime,createUserId,updateTime,loginName,loginPwd)
VALUES
(#{roomId},#{roomName},#{deptName},#{name},#{sex},#{userPost},#{phone},#{mobile},#{summary},#{photoPath},#{workStatus},#{createTime},#{createUserId},#{updateTime})
(#{roomId},#{roomName},#{deptName},#{name},#{sex},#{userPost},#{phone},#{mobile},#{summary},#{photoPath},#{workStatus},#{createTime},#{createUserId},#{updateTime},#{loginName},#{loginPwd})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_workman
(roomId,roomName,deptName,name,sex,userPost,phone,mobile,summary,photoPath,workStatus,createTime,createUserId,updateTime)
(roomId,roomName,deptName,name,sex,userPost,phone,mobile,summary,photoPath,workStatus,createTime,createUserId,updateTime,loginName,loginPwd)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.roomId},#{item.roomName},#{item.deptName},#{item.name},#{item.sex},#{item.userPost},#{item.phone},#{item.mobile},#{item.summary},#{item.photoPath},#{item.workStatus},#{item.createTime},#{item.createUserId},#{item.updateTime})
(#{item.roomId},#{item.roomName},#{item.deptName},#{item.name},#{item.sex},#{item.userPost},#{item.phone},#{item.mobile},#{item.summary},#{item.photoPath},#{item.workStatus},#{item.createTime},#{item.createUserId},#{item.updateTime},#{item.loginName},#{item.loginPwd})
</foreach>
</insert>
......@@ -149,6 +157,12 @@
<if test="(colPickMode==0 and data.containsKey('updateTime')) or (colPickMode==1 and !data.containsKey('updateTime'))">
a.updateTime=#{data.updateTime},
</if>
<if test="(colPickMode==0 and data.containsKey('loginName')) or (colPickMode==1 and !data.containsKey('loginName'))">
a.loginName=#{data.loginName},
</if>
<if test="(colPickMode==0 and data.containsKey('loginPwd')) or (colPickMode==1 and !data.containsKey('loginPwd'))">
a.loginPwd=#{data.loginPwd},
</if>
</trim>
<trim suffixOverrides="where" suffix="">
where
......@@ -274,6 +288,20 @@
</if>
</foreach>
</trim>
<trim prefix="loginName=(case" suffix="ELSE loginName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('loginName')) or (colPickMode==1 and !item.containsKey('loginName'))">
when a.id=#{item.id} then #{item.loginName}
</if>
</foreach>
</trim>
<trim prefix="loginPwd=(case" suffix="ELSE loginPwd end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('loginPwd')) or (colPickMode==1 and !item.containsKey('loginPwd'))">
when a.id=#{item.id} then #{item.loginPwd}
</if>
</foreach>
</trim>
</trim>
where id in
<foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")">
......@@ -717,6 +745,48 @@
<if test="conditionParamRef.containsKey('updateTimeEnd') and conditionParamRef.updateTimeEnd != null and conditionParamRef.updateTimeEnd!=''">
${_conditionType_} a.updateTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.updateTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('loginName')">
<if test="conditionParamRef.loginName != null and conditionParamRef.loginName != ''">
${_conditionType_} a.loginName like #{${_conditionParam_}.loginName}
</if>
<if test="conditionParamRef.loginName == null">
${_conditionType_} a.loginName is null
</if>
</if>
<if test="conditionParamRef.containsKey('loginNameList') and conditionParamRef.loginNameList.size() > 0">
${_conditionType_} a.loginName in
<foreach collection="conditionParamRef.loginNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('loginNameNotList') and conditionParamRef.loginNameNotList.size() > 0">
${_conditionType_} a.loginName not in
<foreach collection="conditionParamRef.loginNameNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('loginPwd')">
<if test="conditionParamRef.loginPwd != null and conditionParamRef.loginPwd != ''">
${_conditionType_} a.loginPwd like #{${_conditionParam_}.loginPwd}
</if>
<if test="conditionParamRef.loginPwd == null">
${_conditionType_} a.loginPwd is null
</if>
</if>
<if test="conditionParamRef.containsKey('loginPwdList') and conditionParamRef.loginPwdList.size() > 0">
${_conditionType_} a.loginPwd in
<foreach collection="conditionParamRef.loginPwdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('loginPwdNotList') and conditionParamRef.loginPwdNotList.size() > 0">
${_conditionType_} a.loginPwd not in
<foreach collection="conditionParamRef.loginPwdNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
</sql>
<sql id="_orderCols_">
<if test="orderColList != null and !orderColList.isEmpty()">
......@@ -805,6 +875,16 @@
<if test='orderCol.updateTime != null and "DESC".equalsIgnoreCase(orderCol.updateTime)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('loginName')">
a.loginName
<if test='orderCol.loginName != null and "DESC".equalsIgnoreCase(orderCol.loginName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('loginPwd')">
a.loginPwd
<if test='orderCol.loginPwd != null and "DESC".equalsIgnoreCase(orderCol.loginPwd)'>DESC</if>
,
</if>
</trim>
</if>
</sql>
......
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