Commit 1c185a09 authored by 赵啸非's avatar 赵啸非

添加设备相关

parent b722847b
...@@ -247,7 +247,60 @@ CREATE TABLE mortals_xhx_matter_datum_print( ...@@ -247,7 +247,60 @@ CREATE TABLE mortals_xhx_matter_datum_print(
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='打印提交'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='打印提交';
-- ----------------------------
-- 设备表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_device`;
CREATE TABLE `mortals_xhx_device` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`deviceId` bigint(20) DEFAULT NULL COMMENT '设备id',
`deviceName` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '设备名称',
`deviceCode` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '设备编码',
`deviceMac` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '设备的MAC地址',
`siteId` bigint(20) DEFAULT NULL COMMENT '站点Id',
`siteCode` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '站点编号,来源基础服务平台',
`siteName` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '站点名称',
`productCode` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '产品编码',
`productName` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '产品名称',
`deviceSrc` tinyint(2) DEFAULT 2 COMMENT '设备来源(0.子设备,1.网关设备,2.直连设备)',
`lon` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '经度',
`lati` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '纬度',
`leadingOfficial` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '负责人',
`leadingOfficialTelephone` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '联系电话',
`deviceStatus` tinyint(2) DEFAULT NULL COMMENT '设备状态 (0.未激活,1.离线,2.在线)',
`deviceRemark` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '备注',
`source` tinyint(2) DEFAULT 1 COMMENT '设备来源(0.旧设备,1.新设备)',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) DEFAULT NULL COMMENT '更新用户',
`updateTime` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备';
-- ----------------------------
-- 设备事项申请材料业务表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_device_matter_datum`;
CREATE TABLE mortals_xhx_device_matter_datum(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键,自增长',
`siteId` bigint(20) COMMENT '站点ID',
`deviceId` bigint(20) COMMENT '设备id',
`deviceCode` varchar(255) COMMENT '设备编码',
`deviceName` varchar(255) COMMENT '设备名称',
`matterId` bigint(20) COMMENT '事项id',
`matterCode` varchar(255) COMMENT '事项编码',
`matterName` varchar(255) COMMENT '事项名称',
`deptId` bigint(20) COMMENT '部门ID',
`deptCode` varchar(256) COMMENT '部门编号',
`deptName` varchar(256) COMMENT '部门名称',
`source` tinyint(2) COMMENT '事项来源(0.政务网,1.自定义)',
`isRecommend` tinyint(2) COMMENT '是否推荐(0.未推荐,1.推荐)',
`sort` int(4) COMMENT '排序',
`createTime` datetime COMMENT '创建时间',
`createUserId` bigint(20) COMMENT '创建用户',
`updateTime` datetime COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备事项申请材料业务';
......
package com.mortals.xhx.daemon.task;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.ITask;
import com.mortals.framework.service.ITaskExcuteService;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.device.DevicePdu;
import com.mortals.xhx.common.pdu.site.SitePdu;
import com.mortals.xhx.common.utils.BeanUtil;
import com.mortals.xhx.feign.device.IDeviceFeign;
import com.mortals.xhx.feign.site.ISiteFeign;
import com.mortals.xhx.module.device.model.DeviceEntity;
import com.mortals.xhx.module.device.model.DeviceQuery;
import com.mortals.xhx.module.device.service.DeviceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 同步事项列表
*/
@Slf4j
@Service("SyncSiteDeviceTask")
public class SyncSiteDeviceTaskImpl implements ITaskExcuteService {
@Autowired
private ISiteFeign siteFeign;
@Autowired
private IDeviceFeign deviceFeign;
@Autowired
private DeviceService deviceService;
@Override
public void excuteTask(ITask task) throws AppException {
log.info("开始同步设备列表!");
SitePdu sitePdu = new SitePdu();
sitePdu.setId(1L);
Rest<List<SitePdu>> siteRest = siteFeign.getFlatSitesBySiteId(sitePdu);
if (siteRest.getCode() == YesNoEnum.YES.getValue()) {
log.info("站点总数量:{}", siteRest.getData().size());
siteRest.getData().forEach(site -> {
log.info("站点名称:{}",site.getSiteName());
DevicePdu devicePdu = new DevicePdu();
devicePdu.setProductCode("ybj");
devicePdu.setSize(-1);
Rest<RespData<List<DevicePdu>>> deviceRest = deviceFeign.list(devicePdu);
log.info("deviceRest:{}",JSON.toJSONString(deviceRest));
if (YesNoEnum.YES.getValue() == deviceRest.getCode()) {
List<DevicePdu> devicePduList = deviceRest.getData().getData();
log.info("样表机总数量:{}", devicePduList.size());
if (!ObjectUtils.isEmpty(devicePduList)) {
List<DeviceEntity> newDeviceList = devicePduList.stream().map(newDevice -> {
DeviceEntity deviceEntity = new DeviceEntity();
deviceEntity.initAttrValue();
BeanUtils.copyProperties(newDevice, deviceEntity, BeanUtil.getNullPropertyNames(newDevice));
return deviceEntity;
}).collect(Collectors.toList());
List<DeviceEntity> oldDeviceList = deviceService.find(new DeviceQuery().siteId(site.getId()));
Map<String, DeviceEntity> oldDeviceMap = oldDeviceList.stream().collect(Collectors.toMap(x -> x.getDeviceCode(), y -> y, (o, n) -> n));
List<DeviceEntity> updateDeviceLsit = newDeviceList.stream().map(item -> {
if (oldDeviceMap.containsKey(item.getDeviceCode())) {
item.setId(oldDeviceMap.get(item.getDeviceCode()).getId());
item.setDeviceId(item.getId());
item.setUpdateTime(new Date());
return item;
}
return null;
}).filter(f -> f != null).collect(Collectors.toList());
List<DeviceEntity> saveDeviceList = newDeviceList.stream().map(item -> {
if (!oldDeviceMap.containsKey(item.getDeviceCode())) {
item.setDeviceId(item.getId());
item.setCreateUserId(1L);
item.setCreateUserName("系统管理员");
item.setCreateTime(new Date());
return item;
}
return null;
}).filter(f -> f != null).collect(Collectors.toList());
if (!ObjectUtils.isEmpty(updateDeviceLsit)) {
log.info("设备更新,size:{}", updateDeviceLsit.size());
deviceService.update(updateDeviceLsit);
}
if (!ObjectUtils.isEmpty(saveDeviceList)) {
log.info("设备新增,size:{}", saveDeviceList.size());
deviceService.save(saveDeviceList);
}
}
} else {
log.info("设备列表查询异常,{}", JSON.toJSONString(deviceRest));
}
});
} else {
log.info("站点列表查询异常,{}", JSON.toJSONString(siteRest));
}
}
@Override
public void stopTask(ITask task) throws AppException {
}
}
...@@ -8,8 +8,9 @@ import com.mortals.xhx.module.device.model.DeviceEntity; ...@@ -8,8 +8,9 @@ import com.mortals.xhx.module.device.model.DeviceEntity;
* 设备 DAO接口 * 设备 DAO接口
* *
* @author zxfei * @author zxfei
* @date 2022-06-27 * @date 2023-02-25
*/ */
public interface DeviceDao extends ICRUDDao<DeviceEntity,Long>{ public interface DeviceDao extends ICRUDDao<DeviceEntity,Long>{
......
package com.mortals.xhx.module.device.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.device.model.DeviceMatterDatumEntity;
/**
* 设备事项申请材料业务Dao
* 设备事项申请材料业务 DAO接口
*
* @author zxfei
* @date 2023-02-25
*/
public interface DeviceMatterDatumDao extends ICRUDDao<DeviceMatterDatumEntity,Long>{
}
...@@ -10,7 +10,7 @@ import org.springframework.stereotype.Repository; ...@@ -10,7 +10,7 @@ import org.springframework.stereotype.Repository;
* 设备DaoImpl DAO接口 * 设备DaoImpl DAO接口
* *
* @author zxfei * @author zxfei
* @date 2022-06-27 * @date 2023-02-25
*/ */
@Repository("deviceDao") @Repository("deviceDao")
public class DeviceDaoImpl extends BaseCRUDDaoMybatis<DeviceEntity,Long> implements DeviceDao { public class DeviceDaoImpl extends BaseCRUDDaoMybatis<DeviceEntity,Long> implements DeviceDao {
......
package com.mortals.xhx.module.device.dao.ibatis;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.module.device.dao.DeviceMatterDatumDao;
import com.mortals.xhx.module.device.model.DeviceMatterDatumEntity;
import org.springframework.stereotype.Repository;
/**
* 设备事项申请材料业务DaoImpl DAO接口
*
* @author zxfei
* @date 2023-02-25
*/
@Repository("deviceMatterDatumDao")
public class DeviceMatterDatumDaoImpl extends BaseCRUDDaoMybatis<DeviceMatterDatumEntity,Long> implements DeviceMatterDatumDao {
}
package com.mortals.xhx.module.device.model;
import com.mortals.xhx.module.device.model.vo.DeviceMatterDatumVo;
/**
* 设备事项申请材料业务实体对象
*
* @author zxfei
* @date 2023-03-23
*/
public class DeviceMatterDatumEntity extends DeviceMatterDatumVo {
private static final long serialVersionUID = 1L;
/**
* 站点ID
*/
private Long siteId;
/**
* 设备id
*/
private Long deviceId;
/**
* 设备编码
*/
private String deviceCode;
/**
* 设备名称
*/
private String deviceName;
/**
* 事项id
*/
private Long matterId;
/**
* 事项编码
*/
private String matterCode;
/**
* 事项名称
*/
private String matterName;
/**
* 部门ID
*/
private Long deptId;
/**
* 部门编号
*/
private String deptCode;
/**
* 部门名称
*/
private String deptName;
/**
* 事项来源(0.政务网,1.自定义)
*/
private Integer source;
/**
* 是否推荐(0.未推荐,1.推荐)
*/
private Integer isRecommend;
/**
* 排序
*/
private Integer sort;
public DeviceMatterDatumEntity(){}
/**
* 获取 站点ID
* @return Long
*/
public Long getSiteId(){
return siteId;
}
/**
* 设置 站点ID
* @param siteId
*/
public void setSiteId(Long siteId){
this.siteId = siteId;
}
/**
* 获取 设备id
* @return Long
*/
public Long getDeviceId(){
return deviceId;
}
/**
* 设置 设备id
* @param deviceId
*/
public void setDeviceId(Long deviceId){
this.deviceId = deviceId;
}
/**
* 获取 设备编码
* @return String
*/
public String getDeviceCode(){
return deviceCode;
}
/**
* 设置 设备编码
* @param deviceCode
*/
public void setDeviceCode(String deviceCode){
this.deviceCode = deviceCode;
}
/**
* 获取 设备名称
* @return String
*/
public String getDeviceName(){
return deviceName;
}
/**
* 设置 设备名称
* @param deviceName
*/
public void setDeviceName(String deviceName){
this.deviceName = deviceName;
}
/**
* 获取 事项id
* @return Long
*/
public Long getMatterId(){
return matterId;
}
/**
* 设置 事项id
* @param matterId
*/
public void setMatterId(Long matterId){
this.matterId = matterId;
}
/**
* 获取 事项编码
* @return String
*/
public String getMatterCode(){
return matterCode;
}
/**
* 设置 事项编码
* @param matterCode
*/
public void setMatterCode(String matterCode){
this.matterCode = matterCode;
}
/**
* 获取 事项名称
* @return String
*/
public String getMatterName(){
return matterName;
}
/**
* 设置 事项名称
* @param matterName
*/
public void setMatterName(String matterName){
this.matterName = matterName;
}
/**
* 获取 部门ID
* @return Long
*/
public Long getDeptId(){
return deptId;
}
/**
* 设置 部门ID
* @param deptId
*/
public void setDeptId(Long deptId){
this.deptId = deptId;
}
/**
* 获取 部门编号
* @return String
*/
public String getDeptCode(){
return deptCode;
}
/**
* 设置 部门编号
* @param deptCode
*/
public void setDeptCode(String deptCode){
this.deptCode = deptCode;
}
/**
* 获取 部门名称
* @return String
*/
public String getDeptName(){
return deptName;
}
/**
* 设置 部门名称
* @param deptName
*/
public void setDeptName(String deptName){
this.deptName = deptName;
}
/**
* 获取 事项来源(0.政务网,1.自定义)
* @return Integer
*/
public Integer getSource(){
return source;
}
/**
* 设置 事项来源(0.政务网,1.自定义)
* @param source
*/
public void setSource(Integer source){
this.source = source;
}
/**
* 获取 是否推荐(0.未推荐,1.推荐)
* @return Integer
*/
public Integer getIsRecommend(){
return isRecommend;
}
/**
* 设置 是否推荐(0.未推荐,1.推荐)
* @param isRecommend
*/
public void setIsRecommend(Integer isRecommend){
this.isRecommend = isRecommend;
}
/**
* 获取 排序
* @return Integer
*/
public Integer getSort(){
return sort;
}
/**
* 设置 排序
* @param sort
*/
public void setSort(Integer sort){
this.sort = sort;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof DeviceMatterDatumEntity) {
DeviceMatterDatumEntity tmp = (DeviceMatterDatumEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append(",siteId:").append(getSiteId());
sb.append(",deviceId:").append(getDeviceId());
sb.append(",deviceCode:").append(getDeviceCode());
sb.append(",deviceName:").append(getDeviceName());
sb.append(",matterId:").append(getMatterId());
sb.append(",matterCode:").append(getMatterCode());
sb.append(",matterName:").append(getMatterName());
sb.append(",deptId:").append(getDeptId());
sb.append(",deptCode:").append(getDeptCode());
sb.append(",deptName:").append(getDeptName());
sb.append(",source:").append(getSource());
sb.append(",isRecommend:").append(getIsRecommend());
sb.append(",sort:").append(getSort());
return sb.toString();
}
public void initAttrValue(){
this.siteId = null;
this.deviceId = null;
this.deviceCode = null;
this.deviceName = null;
this.matterId = null;
this.matterCode = null;
this.matterName = null;
this.deptId = null;
this.deptCode = null;
this.deptName = null;
this.source = null;
this.isRecommend = null;
this.sort = null;
}
}
\ No newline at end of file
package com.mortals.xhx.module.device.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.matter.model.MatterDatumEntity;
import lombok.Data;
import java.util.List;
/**
* 设备事项申请材料业务视图对象
*
* @author zxfei
* @date 2023-02-25
*/
@Data
public class DeviceMatterDatumVo extends BaseEntityLong {
private List<MatterDatumEntity> matterDatumList;
}
\ No newline at end of file
package com.mortals.xhx.module.device.model.vo; package com.mortals.xhx.module.device.model.vo;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong; import com.mortals.framework.model.BaseEntityLong;
import lombok.Data;
import org.apache.poi.ss.usermodel.PictureData;
import java.util.List;
/** /**
* 设备视图对象 * 设备视图对象
* *
* @author zxfei * @author zxfei
* @date 2022-07-01 * @date 2023-02-25
*/ */
@Data
public class DeviceVo extends BaseEntityLong { public class DeviceVo extends BaseEntityLong {
/**
* 唯一标识
*/
private String token;
/**
* 平台编码
*/
private String platformCode;
/**
* 产品编码
*/
@Excel(name = "产品类型",cacheDict = "productDict" ,type = Excel.Type.IMPORT)
private String productCode;
/**
* 是否通知第三方
*/
private Boolean switchSend=true;
/**
* 设备图片附件
*/
@Excel(name = "设备图片", type = Excel.Type.IMPORT, cellType = Excel.ColumnType.IMAGE)
@JSONField(deserialize = false,serialize = false)
@JsonIgnore
private PictureData picObj;
/** 主键ID,主键,自增长列表 */
private List <Long> idList;
/**
* 产品列表
*/
private List <Long> productIdList;
private List <Integer> deviceStatusList;
} }
\ No newline at end of file
package com.mortals.xhx.module.device.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.device.dao.DeviceMatterDatumDao;
import com.mortals.xhx.module.device.model.DeviceMatterDatumEntity;
/**
* DeviceMatterDatumService
* <p>
* 设备事项申请材料业务 service接口
*
* @author zxfei
* @date 2023-02-25
*/
public interface DeviceMatterDatumService extends ICRUDService<DeviceMatterDatumEntity, Long> {
DeviceMatterDatumDao getDao();
}
\ No newline at end of file
package com.mortals.xhx.module.device.service; package com.mortals.xhx.module.device.service;
import com.mortals.framework.service.ICRUDService; import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.device.model.DeviceEntity; import com.mortals.xhx.module.device.model.DeviceEntity;
/** /**
* DeviceService * DeviceService
* *
* 设备 service接口 * 设备 service接口
* *
* @author zxfei * @author zxfei
* @date 2022-03-09 * @date 2023-02-25
*/ */
public interface DeviceService extends ICRUDService<DeviceEntity,Long> { public interface DeviceService extends ICRUDService<DeviceEntity,Long>{
} }
\ No newline at end of file
package com.mortals.xhx.module.device.service.impl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.xhx.module.device.dao.DeviceMatterDatumDao;
import com.mortals.xhx.module.device.model.DeviceEntity;
import com.mortals.xhx.module.device.model.DeviceMatterDatumEntity;
import com.mortals.xhx.module.device.model.DeviceMatterDatumQuery;
import com.mortals.xhx.module.device.service.DeviceMatterDatumService;
import com.mortals.xhx.module.device.service.DeviceService;
import com.mortals.xhx.module.matter.model.MatterDatumEntity;
import com.mortals.xhx.module.matter.model.MatterDatumQuery;
import com.mortals.xhx.module.matter.model.MatterEntity;
import com.mortals.xhx.module.matter.service.MatterDatumService;
import com.mortals.xhx.module.matter.service.MatterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.ArrayList;
import java.util.List;
/**
* DeviceMatterDatumService
* 设备事项申请材料业务 service实现
*
* @author zxfei
* @date 2023-02-25
*/
@Service("deviceMatterDatumService")
public class DeviceMatterDatumServiceImpl extends AbstractCRUDServiceImpl<DeviceMatterDatumDao, DeviceMatterDatumEntity, Long> implements DeviceMatterDatumService {
@Autowired
private MatterService matterService;
@Autowired
private DeviceService deviceService;
@Autowired
private MatterDatumService matterDatumService;
@Override
protected void findAfter(DeviceMatterDatumEntity params, PageInfo pageInfo, Context context, List<DeviceMatterDatumEntity> list) throws AppException {
//super.findAfter(params, pageInfo, context, list);
list.forEach(item->{
List<MatterDatumEntity> matterDatumEntities = matterDatumService.find(new MatterDatumQuery().matterId(item.getMatterId()));
if(!ObjectUtils.isEmpty(matterDatumEntities)){
item.setMatterDatumList(matterDatumEntities);
}else{
item.setMatterDatumList(new ArrayList<>());
}
});
}
@Override
protected void saveBefore(DeviceMatterDatumEntity entity, Context context) throws AppException {
super.saveBefore(entity, context);
int count = this.getDao().getCount(new DeviceMatterDatumQuery().deviceId(entity.getDeviceId()).matterId(entity.getMatterId()));
if(count>0){
throw new AppException("当前设备关联事项已存在,不能新增!");
}
//entity.getMatterId()
if(!ObjectUtils.isEmpty(entity.getMatterId())){
MatterEntity matterEntity = matterService.get(entity.getMatterId());
if(!ObjectUtils.isEmpty(matterEntity)){
entity.setMatterCode(matterEntity.getMatterNo());
entity.setMatterName(matterEntity.getMatterName());
entity.setDeptId(matterEntity.getDeptId());
entity.setDeptCode(matterEntity.getDeptCode());
entity.setDeptName(matterEntity.getDeptName());
}
}
if(!ObjectUtils.isEmpty(entity.getDeviceId())){
DeviceEntity deviceEntity = deviceService.get(entity.getDeviceId());
if(!ObjectUtils.isEmpty(deviceEntity)){
entity.setDeviceCode(deviceEntity.getDeviceCode());
entity.setDeviceName(deviceEntity.getDeviceName());
}
}
}
@Override
protected void updateBefore(DeviceMatterDatumEntity entity, Context context) throws AppException {
super.updateBefore(entity, context);
}
}
\ No newline at end of file
package com.mortals.xhx.module.device.service.impl; package com.mortals.xhx.module.device.service.impl;
import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.key.Constant;
import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.device.DevicePdu;
import com.mortals.xhx.common.utils.BeanUtil;
import com.mortals.xhx.feign.device.IDeviceFeign;
import com.mortals.xhx.module.device.dao.DeviceDao; 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 com.mortals.xhx.module.matter.service.MatterDatumService;
import org.springframework.beans.BeanUtils; import com.mortals.xhx.module.matter.service.MatterService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/** /**
* DeviceService * DeviceService
* 设备 service实现 * 设备 service实现
* *
* @author zxfei * @author zxfei
* @date 2022-03-09 * @date 2023-02-25
*/ */
@Service("deviceService") @Service("deviceService")
@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;
@Autowired
private MatterService matterService;
@Autowired
private MatterDatumService matterDatumService;
@Override @Override
public Result<DeviceEntity> find(DeviceEntity entity, PageInfo pageInfo, Context context) throws AppException { protected void saveBefore(DeviceEntity entity, Context context) throws AppException {
Result<DeviceEntity> result = new Result(); super.saveBefore(entity, context);
DevicePdu devicePdu = new DevicePdu();
BeanUtils.copyProperties(entity, devicePdu, BeanUtil.getNullPropertyNames(entity));
String productName = GlobalSysInfo.getParamValue(Constant.PARAMS_PRODUCT_NAME, "填单机");
devicePdu.setProductName(productName);
devicePdu.setSiteId(entity.getSiteId());
Rest<RespData<List<DevicePdu>>> rest = deviceFeign.list(devicePdu);
if (rest.getCode().equals(YesNoEnum.YES.getValue())) {
List<DeviceEntity> collect = rest.getData().getData().stream().map(item -> {
DeviceEntity deviceEntity = new DeviceEntity();
BeanUtils.copyProperties(item, deviceEntity, BeanUtil.getNullPropertyNames(item));
return deviceEntity;
}).collect(Collectors.toList());
result.setList(collect);
result.setDict(rest.getDict());
}
this.findAfter(entity, pageInfo, context, result.getList());
return result;
} }
} }
\ No newline at end of file
package com.mortals.xhx.module.device.web; package com.mortals.xhx.module.device.web;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
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 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 java.util.Map; import java.util.Map;
/** /**
* 设备 *
* * 设备
* @author zxfei *
* @date 2022-06-27 * @author zxfei
*/ * @date 2023-02-25
*/
@RestController @RestController
@RequestMapping("device") @RequestMapping("device")
@Slf4j public class DeviceController extends BaseCRUDJsonBodyMappingController<DeviceService,DeviceEntity,Long> {
public class DeviceController extends BaseCRUDJsonBodyMappingController<DeviceService, DeviceEntity, Long> {
@Autowired
private ParamService paramService;
public DeviceController(){
super.setModuleDesc( "设备");
}
@Override @Override
protected int doListAfter(DeviceEntity query, Map<String, Object> model, Context context) throws AppException { protected void init(Map<String, Object> model, Context context) {
log.info("result:{}", JSON.toJSONString(model)); this.addDict(model, "deviceSrc", paramService.getParamBySecondOrganize("Device","deviceSrc"));
return super.doListAfter(query, model, context); this.addDict(model, "deviceStatus", paramService.getParamBySecondOrganize("Device","deviceStatus"));
this.addDict(model, "source", paramService.getParamBySecondOrganize("Device","source"));
super.init(model, context);
} }
} }
\ No newline at end of file
package com.mortals.xhx.module.device.web;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.module.device.model.DeviceMatterDatumEntity;
import com.mortals.xhx.module.device.model.DeviceMatterDatumQuery;
import com.mortals.xhx.module.device.service.DeviceMatterDatumService;
import com.mortals.xhx.module.matter.model.MatterDatumEntity;
import com.mortals.xhx.module.matter.model.MatterDatumQuery;
import com.mortals.xhx.module.matter.service.MatterDatumService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
*
* 设备事项申请材料业务
*
* @author zxfei
* @date 2023-02-25
*/
@RestController
@RequestMapping("device/matter/datum")
public class DeviceMatterDatumController extends BaseCRUDJsonBodyMappingController<DeviceMatterDatumService,DeviceMatterDatumEntity,Long> {
@Autowired
private ParamService paramService;
@Autowired
private MatterDatumService matterDatumService;
public DeviceMatterDatumController(){
super.setModuleDesc( "设备事项申请材料业务");
}
@Override
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "source", paramService.getParamBySecondOrganize("DeviceMatterDatum","source"));
this.addDict(model, "isRecommend", paramService.getParamBySecondOrganize("DeviceMatterDatum","isRecommend"));
super.init(model, context);
}
@Override
protected void batchSaveBefore(List<DeviceMatterDatumEntity> list, Map<String, Object> model, Context context) throws AppException {
Iterator<DeviceMatterDatumEntity> iterator = list.iterator();
while (iterator.hasNext()) {
DeviceMatterDatumEntity next = iterator.next();
int count = this.service.getDao().getCount(new DeviceMatterDatumQuery().deviceId(next.getDeviceId()).matterId(next.getMatterId()));
if(count>0){
iterator.remove();
}
}
super.batchSaveBefore(list, model, context);
}
@Override
protected int infoAfter(Long id, Map<String, Object> model, DeviceMatterDatumEntity entity, Context context) throws AppException {
List<MatterDatumEntity> matterDatumEntities = matterDatumService.find(new MatterDatumQuery().matterId(entity.getMatterId()));
entity.setMatterDatumList(matterDatumEntities);
return super.infoAfter(id, model, entity, context);
}
}
\ 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