设备维度-水表设备同步

This commit is contained in:
曹磊 2025-07-30 17:36:57 +08:00
parent ad9a4940ec
commit f0a4561ed1
13 changed files with 492 additions and 1 deletions

View File

@ -103,6 +103,12 @@ public class NuBaseInfoController extends JeecgController<NuBaseInfo, INuBaseInf
if(StringUtils.isNotBlank(nuBaseInfo.getOrgCode())){
queryWrapper.eq("sys_org_code",nuBaseInfo.getOrgCode());
}
if(StringUtils.isNotBlank(nuBaseInfo.getIzSync())){
queryWrapper.eq("iz_sync",nuBaseInfo.getIzSync());
}
if(StringUtils.isNotBlank(nuBaseInfo.getDelFlag())){
queryWrapper.eq("del_flag",nuBaseInfo.getDelFlag());
}
queryWrapper.orderByDesc("nu_id + 0");
Page<NuBaseInfo> page = new Page<NuBaseInfo>(pageNo, pageSize);
IPage<NuBaseInfo> pageList = nuBaseInfoService.page(page, queryWrapper);

View File

@ -0,0 +1,46 @@
package com.nu.modules.orgapplyinfo.controller;
import com.nu.modules.orgapplyinfo.entity.OrgApplyInfo;
import org.jeecg.common.api.vo.Result;
import com.nu.modules.orgapplyinfo.service.IOrgApplyInfoService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.Api;
/**
* @Description: 机构加盟申请信息表
* @Author: caolei
* @Date: 2025-07-25
* @Version: V1.0
*/
@Api(tags = "机构加盟申请信息表")
@RestController
@RequestMapping("/admin/orgapplyinfo/orgApplyInfo")
@Slf4j
public class OrgApplyInfoController extends JeecgController<OrgApplyInfo, IOrgApplyInfoService> {
@Autowired
private IOrgApplyInfoService orgApplyInfoService;
/**
* 获取各机构详细信息
*
* @param orgCode 机构编码
* @return
*/
@GetMapping(value = "/getOrgInfo")
public Result<IPage<OrgApplyInfo>> getOrgInfo(
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "8") Integer pageSize,
@RequestParam(value = "orgCode", defaultValue = "", required = false) String orgCode,
@RequestParam(value = "title", defaultValue = "", required = false) String title) {
IPage<OrgApplyInfo> page = new Page<>(pageNo, pageSize);
IPage<OrgApplyInfo> resultPage = orgApplyInfoService.queryOrgInfo(page, orgCode, title);
return Result.OK(resultPage);
}
}

View File

@ -0,0 +1,32 @@
package com.nu.modules.orgapplyinfo.entity;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Description: 机构信息
* @Author: caolei
* @Date: 2025-07-25
* @Version: V1.0
*/
@Data
public class OrgApplyInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**机构id*/
private String orgId;
/**机构/部门名称*/
private String departName;
/**机构编码*/
private String orgCode;
/**加盟时间*/
private Date franchiseTime;
/**机构负责人*/
private String orgLeader;
/**机构负责人电话*/
private String orgLeaderPhone;
/**机构地址*/
private String comRegisterAddress;
}

View File

@ -0,0 +1,17 @@
package com.nu.modules.orgapplyinfo.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.nu.modules.orgapplyinfo.entity.OrgApplyInfo;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 机构加盟申请信息表
* @Author: caolei
* @Date: 2025-07-25
* @Version: V1.0
*/
public interface OrgApplyInfoMapper extends BaseMapper<OrgApplyInfo> {
IPage<OrgApplyInfo> queryOrgInfo(@Param("page") IPage<OrgApplyInfo> page, @Param("orgCode") String orgCode, @Param("title") String title);
}

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nu.modules.orgapplyinfo.mapper.OrgApplyInfoMapper">
<select id="queryOrgInfo" resultType="com.nu.modules.orgapplyinfo.entity.OrgApplyInfo">
select
d.id as orgId,
d.depart_name,
d.org_code,
o.franchise_time,
o.org_leader,
o.org_leader_phone,
o.com_register_address as comRegisterAddress
from sys_depart d
left join nu_org_info o on d.id = o.pk_id
<where>
<if test="orgCode !=null and orgCode != ''">
AND d.org_code = #{orgCode}
</if>
<if test="title != null and title != ''">
AND d.depart_name LIKE CONCAT('%', #{title}, '%')
</if>
</where>
order by (d.org_code + 0) asc
</select>
</mapper>

View File

@ -0,0 +1,16 @@
package com.nu.modules.orgapplyinfo.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.nu.modules.orgapplyinfo.entity.OrgApplyInfo;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 机构加盟申请信息表
* @Author: caolei
* @Date: 2025-07-25
* @Version: V1.0
*/
public interface IOrgApplyInfoService extends IService<OrgApplyInfo> {
IPage<OrgApplyInfo> queryOrgInfo(IPage<OrgApplyInfo> page, String orgCode, String title);
}

View File

@ -0,0 +1,23 @@
package com.nu.modules.orgapplyinfo.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.modules.orgapplyinfo.entity.OrgApplyInfo;
import com.nu.modules.orgapplyinfo.mapper.OrgApplyInfoMapper;
import com.nu.modules.orgapplyinfo.service.IOrgApplyInfoService;
import org.springframework.stereotype.Service;
/**
* @Description: 机构加盟申请信息表
* @Author: caolei
* @Date: 2025-07-25
* @Version: V1.0
*/
@Service
public class OrgApplyInfoServiceImpl extends ServiceImpl<OrgApplyInfoMapper, OrgApplyInfo> implements IOrgApplyInfoService {
@Override
public IPage<OrgApplyInfo> queryOrgInfo(IPage<OrgApplyInfo> page, String orgCode, String title) {
return baseMapper.queryOrgInfo(page, orgCode, title);
}
}

View File

@ -2,7 +2,6 @@ package com.nu.modules.tq.water.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nu.modules.tq.electricity.entity.ElectricityMeter;
import com.nu.modules.tq.water.entity.WaterMeter;
import com.nu.modules.tq.water.service.IWaterMeterService;
import io.swagger.annotations.ApiOperation;
@ -15,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
@Slf4j
@ -119,4 +119,95 @@ public class WaterMeterController extends JeecgController<WaterMeter, IWaterMete
return Result.error("其他错误,请联系管理员!");
}
}
/**
* 水表源数据查询
*
* @param waterMeter
* @param pageNo
* @param pageSize
* @return
*/
@GetMapping(value = "/sourceList")
public Result<IPage<WaterMeter>> sourceList(WaterMeter waterMeter,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
Page<WaterMeter> page = new Page<WaterMeter>(pageNo, pageSize);
IPage<WaterMeter> pageList = service.findSourcePage(page, waterMeter);
return Result.OK(pageList);
}
/**
* 水表数据中机构列表查询
*
* @param waterMeter
* @return
*/
@GetMapping(value = "/departList")
public Result<List<WaterMeter>> departList(WaterMeter waterMeter) {
List<WaterMeter> list = service.findDepartList(waterMeter);
return Result.OK(list);
}
/**
* 水表数据中区域列表查询
*
* @param waterMeter
* @return
*/
@GetMapping(value = "/nuList")
public Result<List<WaterMeter>> nuList(WaterMeter waterMeter) {
List<WaterMeter> list = service.findNuList(waterMeter);
return Result.OK(list);
}
/**
* 水表数据中已同步列表查询
*
* @param waterMeter
* @return
*/
@GetMapping(value = "/businessList")
public Result<IPage<WaterMeter>> businessList(WaterMeter waterMeter,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
Page<WaterMeter> page = new Page<WaterMeter>(pageNo, pageSize);
IPage<WaterMeter> pageList = service.findBusinessPage(page,waterMeter);
return Result.OK(pageList);
}
/**
* 以设备维度同步水表到业务
*
* @param list
* @return
*/
@PostMapping(value = "/syncDevices")
public Result<String> syncDevices(@RequestBody List<WaterMeter> list) {
String result = service.syncDevices(list);
if(StringUtils.equals(result,"0")){
return Result.OK("操作成功!");
}else if (StringUtils.equals(result,"1")){
return Result.error("参数为空!");
}else if (StringUtils.equals(result,"2")){
return Result.error("设备ID为空");
}else{
return Result.error("其他错误,请联系管理员!");
}
}
/**
* 水表同步日志列表查询
*
* @param waterMeter
* @return
*/
@GetMapping(value = "/syncLogList")
public Result<IPage<WaterMeter>> syncLogList(WaterMeter waterMeter,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
Page<WaterMeter> page = new Page<WaterMeter>(pageNo, pageSize);
IPage<WaterMeter> pageList = service.findSyncLogPage(page, waterMeter);
return Result.OK(pageList);
}
}

View File

@ -9,9 +9,11 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable;
import java.util.List;
/**
* <p>Class :物联电表管理Entity
@ -75,10 +77,27 @@ public class WaterMeter implements Serializable {
private String departId;//机构ID
private String departName;//机构名称
private String departServerUrl;//机构服务地址
private String orgCode;//机构编码
private String oldServerUrl;//原机构服务地址
private String syncType;//是否同步 0 未同步 1已同步
private String oldDepartId;//原机构id
private String oldDepartName;//原机构名称
@TableField(exist = false)
private String checkType;
private String oldOrgCode;//原机构编码
@Dict(dicCode = "nu_type")
private String areaFlag;//区域标签
private String viewType;//选择未选择 用于设备同步功能
private String dataType;//数据类型
private String sn;//设备号
private String deviceName;//设备名称
private String status;//状态
private String serverType;//服务类型
private String oldNuId;//原护理单元ID
private String createTime;//时间
private List<WaterMeter> seedList;//子列表
}

View File

@ -20,4 +20,12 @@ public interface WaterMeterMapper extends BaseMapper<WaterMeter> {
int updateWater(WaterMeter waterMeter);
void updateDepartById(WaterMeter waterInfo);
IPage<WaterMeter> findSourcePage(Page<WaterMeter> page, @Param("params") WaterMeter waterMeter);
List<WaterMeter> findDepartList(WaterMeter waterMeter);
List<WaterMeter> findNuList(WaterMeter waterMeter);
IPage<WaterMeter> findBusinessPage(Page<WaterMeter> page, @Param("params") WaterMeter waterMeter);
IPage<WaterMeter> findSyncLogMainPage(Page<WaterMeter> page, @Param("params") WaterMeter waterMeter);
List<WaterMeter> findSyncLogSeedList(WaterMeter waterMeter);
}

View File

@ -140,5 +140,162 @@
update nu_iot_tq_water_meter set nu_id = null,nu_name = null,depart_id = null,depart_name = null,depart_server_url=null where id = #{id}
</update>
<select id="findSourcePage" parameterType="com.nu.modules.tq.water.entity.WaterMeter" resultType="com.nu.modules.tq.water.entity.WaterMeter">
select
a.id,
a.cid,
a.address,
a.water_value as waterValue,
a.relay_state as relayState,
a.battery_state as batteryState,
a.read_time as readTime,
a.remark,
b.online,
b.csq,
b.disconnect_time as disconnectTime,
b.connect_time as connectTime,
a.nu_id as nuId,
a.nu_name as nuName,
a.depart_id as departId,
a.depart_name as departName,
a.depart_server_url as departServerUrl,
a.old_server_url as oldServerUrl,
a.old_depart_id as oldDepartId,
a.old_depart_name as oldDepartName,
c.area_flag as areaFlag
from nu_iot_tq_water_meter a
left join nu_iot_tq_collector b on a.cid = b.cid
left join nu_base_info c on a.nu_id = c.nu_id
<where>
<if test="params.address != null and params.address != ''">
AND a.address LIKE concat('%',#{params.address},'%')
</if>
<if test="params.viewType != null and params.viewType == 'unselected'">
AND ifnull(a.nu_id,'') = ''
</if>
<if test="params.viewType != null and params.viewType == 'selected'">
AND ifnull(a.nu_id,'') != ''
<if test="params.nuId != null and params.nuId != ''">
AND a.nu_id = #{params.nuId}
</if>
<if test="params.departId != null and params.departId != ''">
AND a.depart_id = #{params.departId}
</if>
<if test="params.departServerUrl != null and params.departServerUrl != ''">
AND a.depart_server_url != #{params.departServerUrl}
</if>
</if>
</where>
</select>
<select id="findDepartList" parameterType="com.nu.modules.tq.water.entity.WaterMeter" resultType="com.nu.modules.tq.water.entity.WaterMeter">
select
depart_id as departId,
depart_name as departName
from nu_iot_tq_water_meter
where depart_id is not null
<if test="departServerUrl != null and departServerUrl != ''">
<if test="dataType != null and dataType == 'source'">
AND depart_server_url != #{departServerUrl}
</if>
<if test="dataType != null and dataType == 'business'">
AND depart_server_url = #{departServerUrl}
</if>
</if>
</select>
<select id="findNuList" parameterType="com.nu.modules.tq.water.entity.WaterMeter" resultType="com.nu.modules.tq.water.entity.WaterMeter">
select
nu_id as nuId,
nu_name as nuName
from nu_iot_tq_water_meter
where nu_id is not null
<if test="departId != null and departId != ''">
AND depart_id = #{departId}
</if>
<if test="departServerUrl != null and departServerUrl != ''">
<if test="dataType != null and dataType == 'source'">
AND depart_server_url != #{departServerUrl}
</if>
<if test="dataType != null and dataType == 'business'">
AND depart_server_url = #{departServerUrl}
</if>
</if>
</select>
<select id="findBusinessPage" parameterType="com.nu.modules.tq.water.entity.WaterMeter" resultType="com.nu.modules.tq.water.entity.WaterMeter">
select
a.id,
a.cid,
a.address,
a.water_value as waterValue,
a.relay_state as relayState,
a.battery_state as batteryState,
a.read_time as readTime,
a.remark,
b.online,
b.csq,
b.disconnect_time as disconnectTime,
b.connect_time as connectTime,
a.nu_id as nuId,
a.nu_name as nuName,
a.depart_id as departId,
a.depart_name as departName,
a.depart_server_url as departServerUrl,
a.old_server_url as oldServerUrl,
a.old_depart_id as oldDepartId,
a.old_depart_name as oldDepartName,
c.area_flag as areaFlag
from nu_iot_tq_water_meter a
left join nu_iot_tq_collector b on a.cid = b.cid
left join nu_base_info c on a.nu_id = c.nu_id
where a.depart_server_url = #{params.departServerUrl}
<if test="params.address != null and params.address != ''">
AND a.address LIKE concat('%',#{params.address},'%')
</if>
<if test="params.nuId != null and params.nuId != ''">
AND a.nu_id = #{params.nuId}
</if>
<if test="params.departId != null and params.departId != ''">
AND a.depart_id = #{params.departId}
</if>
order by a.nu_id
</select>
<select id="findSyncLogMainPage" parameterType="com.nu.modules.tq.water.entity.WaterMeter" resultType="com.nu.modules.tq.water.entity.WaterMeter">
select main_id as sn,
main_name as deviceName,
server_type as serverType,
max(create_time) as createTime
from nu_iot_sync_log
where server_type = '水表'
and (org_code = #{params.departServerUrl} or new_org_code = #{params.departServerUrl})
<if test="params.sn != null and params.sn != ''">
AND main_id LIKE concat('%',#{params.sn},'%')
</if>
group by main_id,main_name,server_type
order by createTime desc
</select>
<select id="findSyncLogSeedList" parameterType="com.nu.modules.tq.water.entity.WaterMeter" resultType="com.nu.modules.tq.water.entity.WaterMeter">
select main_id as sn,
main_name as deviceName,
sync_type as syncType,
server_type as serverType,
status,
org_id as oldDepartId,
org_name as oldDepartName,
org_code as oldServerUrl,
nu_id as oldNuId,
new_org_id as departId,
new_org_name as departName,
new_org_code as departServerUrl,
new_nu_id as nuId,
create_time as createTime
from nu_iot_sync_log
where server_type = '水表'
AND main_id = #{sn}
order by createTime desc
</select>
</mapper>

View File

@ -25,4 +25,11 @@ public interface IWaterMeterService extends IService<WaterMeter> {
void editHldy(WaterMeter waterMeter);
String syncWaterList(Map<String, Object> waterList);
IPage<WaterMeter> findSourcePage(Page<WaterMeter> page, WaterMeter waterMeter);
List<WaterMeter> findDepartList(WaterMeter waterMeter);
List<WaterMeter> findNuList(WaterMeter waterMeter);
IPage<WaterMeter> findBusinessPage(Page<WaterMeter> page,WaterMeter waterMeter);
String syncDevices(List<WaterMeter> list);
IPage<WaterMeter> findSyncLogPage(Page<WaterMeter> page,WaterMeter waterMeter);
}

View File

@ -678,4 +678,46 @@ public class WaterMeterServiceImpl extends ServiceImpl<WaterMeterMapper, WaterMe
}
return true;
}
@Override
public IPage<WaterMeter> findSourcePage(Page<WaterMeter> page, WaterMeter waterMeter){
return baseMapper.findSourcePage(page,waterMeter);
}
@Override
public List<WaterMeter> findDepartList(WaterMeter waterMeter){
return baseMapper.findDepartList(waterMeter);
}
@Override
public List<WaterMeter> findNuList(WaterMeter waterMeter){
return baseMapper.findNuList(waterMeter);
}
@Override
public IPage<WaterMeter> findBusinessPage(Page<WaterMeter> page, WaterMeter waterMeter){
return baseMapper.findBusinessPage(page,waterMeter);
}
/**
* 以设备维度同步水表到业务
* @param list
* @return
*/
@Override
public String syncDevices(List<WaterMeter> list){
return "0";
}
@Override
public IPage<WaterMeter> findSyncLogPage(Page<WaterMeter> page, WaterMeter waterMeter){
IPage<WaterMeter> mainPage = baseMapper.findSyncLogMainPage(page,waterMeter);
List<WaterMeter> records = mainPage.getRecords();
for(int i=0;i<records.size();i++){
WaterMeter record = records.get(i);
List<WaterMeter> seedList = baseMapper.findSyncLogSeedList(record);
record.setSeedList(seedList);
}
return mainPage;
}
}