Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
@ -137,6 +137,7 @@ security:
|
||||
- /facility/matrix/**
|
||||
- /hat/device/data
|
||||
- /websocket/ue
|
||||
- /websocket/vehicle
|
||||
|
||||
# 多租户配置
|
||||
tenant:
|
||||
|
||||
@ -92,6 +92,11 @@ public class GpsEquipmentController extends BaseController {
|
||||
return gpsEquipmentService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询GPS设备详细列表给车辆
|
||||
* @param bo
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getListToVehicle")
|
||||
public R<List<GpsEquipmentVo>> getListToVehicle(GpsEquipmentBo bo) {
|
||||
return R.ok(gpsEquipmentService.getListToVehicle(bo));
|
||||
|
||||
@ -87,4 +87,5 @@ public interface IGpsEquipmentSonService extends IService<GpsEquipmentSon>{
|
||||
List<GpsEquipmentSonVo> getUeUserListByProjectId(LocalDateTime startOfDay, LocalDateTime now);
|
||||
|
||||
List<GpsEquipmentSonVo> getVehicleList(GpsEquipmentSonBo bo);
|
||||
List<GpsEquipmentSonVo> getNewVehicleList(GpsEquipmentSonBo bo);
|
||||
}
|
||||
|
||||
@ -35,6 +35,7 @@ import org.dromara.project.domain.vo.project.BusProjectVo;
|
||||
import org.dromara.project.service.IBusProjectService;
|
||||
import org.dromara.system.domain.vo.SysUserVo;
|
||||
import org.dromara.system.service.ISysUserService;
|
||||
import org.dromara.websocket.websocket.service.VehicleWebSocketServer;
|
||||
import org.redisson.api.DeletedObjectListener;
|
||||
import org.redisson.api.ExpiredObjectListener;
|
||||
import org.redisson.api.listener.SetObjectListener;
|
||||
@ -263,7 +264,6 @@ public class GpsEquipmentServiceImpl extends ServiceImpl<GpsEquipmentMapper, Gps
|
||||
|
||||
gpsEquipmentSonService.insertByBo(gpsEquipmentSon);
|
||||
|
||||
//TODO 后续创建websocket长连接发送信息
|
||||
|
||||
//保存到redis,如果存在则更新存活时间
|
||||
|
||||
@ -272,14 +272,26 @@ public class GpsEquipmentServiceImpl extends ServiceImpl<GpsEquipmentMapper, Gps
|
||||
// --------------------------
|
||||
// 1. 构造需要推送的消息内容(String类型)
|
||||
//判断是否有连接
|
||||
if (equipment != null && StringUtils.isNotEmpty(equipment.getModelId())) {
|
||||
int onlineCount = InitOnStartWebSocketServer.getOnlineCount();
|
||||
if (onlineCount > 0){
|
||||
if (equipment != null && StringUtils.isNotEmpty(equipment.getModelId())) {
|
||||
String ued = ueStructureJsonMessage(gpsEquipmentSon, equipment.getModelId());
|
||||
InitOnStartWebSocketServer.sendToAll(ued);
|
||||
}
|
||||
}
|
||||
//判断车辆轨迹是否有连接
|
||||
if (equipment != null && equipment.getClientType() == 1 && equipment.getUserId() != null) {
|
||||
int onlineCount1 = VehicleWebSocketServer.getOnlineCount();
|
||||
if (onlineCount1 > 0) {
|
||||
String vehicled = vehicleStructureJsonMessage(gpsEquipmentSon);
|
||||
VehicleWebSocketServer.sendToSubscription(gpsEquipmentSon.getUserId()+"-"+gpsEquipmentSon.getTripId(), vehicled);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Set<Long> sessionsAll = WebSocketSessionHolder.getSessionsAll();
|
||||
|
||||
if (!sessionsAll.isEmpty()) {
|
||||
String pushContent = buildPushMessage(gpsEquipmentSon);
|
||||
|
||||
@ -348,6 +360,19 @@ public class GpsEquipmentServiceImpl extends ServiceImpl<GpsEquipmentMapper, Gps
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 构建推送消息内容(String类型)
|
||||
*/
|
||||
private String vehicleStructureJsonMessage(GpsEquipmentSonBo sonBo) {
|
||||
// 构造消息对象(包含关键信息)
|
||||
JSONObject messageObj = new JSONObject();
|
||||
messageObj.put("locLatitude", sonBo.getLocLatitude().toString()); // 消息类型
|
||||
messageObj.put("locLongitude", sonBo.getLocLongitude().toString()); // 消息类型
|
||||
// 转换为String类型返回
|
||||
return messageObj.toString();
|
||||
}
|
||||
|
||||
|
||||
private static final int DEVICE_ALIVE_TIMEOUT = 120; // 5分钟
|
||||
/**
|
||||
* 更新设备存活状态到Redis并添加过期监听
|
||||
|
||||
@ -239,4 +239,12 @@ public class GpsEquipmentSonServiceImpl extends ServiceImpl<GpsEquipmentSonMappe
|
||||
.eq(bo.getTripId() != null,GpsEquipmentSon::getTripId,bo.getTripId())
|
||||
.between(GpsEquipmentSon::getCreateTime,bo.getStartTime(),bo.getEndTime()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<GpsEquipmentSonVo> getNewVehicleList(GpsEquipmentSonBo bo) {
|
||||
return baseMapper.selectVoList(new LambdaQueryWrapper<GpsEquipmentSon>()
|
||||
.eq(GpsEquipmentSon::getUserId,bo.getUserId())
|
||||
.eq(GpsEquipmentSon::getTripId,bo.getTripId())
|
||||
.orderByDesc(GpsEquipmentSon::getCreateTime));
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,16 @@
|
||||
package org.dromara.progress.domain.dto.export;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ReportExportDto {
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 日期 yyyy-mm-dd
|
||||
*/
|
||||
private String date;
|
||||
|
||||
private String person;
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
package org.dromara.progress.domain.vo.export;
|
||||
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class EquipmentEntryData {
|
||||
private String no; // 序号
|
||||
private String project; // 项目
|
||||
private String num; // 数量
|
||||
private String production; // 生产情况
|
||||
private String entry; // 今日进场情况
|
||||
private String totalEntry; // 累计进场情况
|
||||
private String remark; // 备注
|
||||
|
||||
|
||||
// 生成模拟数据
|
||||
public static List<EquipmentEntryData> generateMockData() {
|
||||
List<EquipmentEntryData> dataList = new ArrayList<>();
|
||||
dataList.add(new EquipmentEntryData("1", "光伏支架", "3200组", "正常生产", "50组", "1200组", "符合质量标准"));
|
||||
dataList.add(new EquipmentEntryData("2", "光伏组件", "56000块", "正常生产", "750块", "22000块", "符合质量标准"));
|
||||
dataList.add(new EquipmentEntryData("3", "逆变器", "30台", "生产中", "0台", "10台", "预计下周进场"));
|
||||
return dataList;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,31 @@
|
||||
package org.dromara.progress.domain.vo.export;
|
||||
|
||||
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class MaterialEntryData {
|
||||
private String no; // 序号
|
||||
private String materialName;// 材料名称
|
||||
private String designValue; // 设计值
|
||||
private String entryStatus; // 进场情况
|
||||
private String inspection; // 送检记录
|
||||
|
||||
// 生成模拟数据
|
||||
public static List<MaterialEntryData> generateMockData() {
|
||||
List<MaterialEntryData> dataList = new ArrayList<>();
|
||||
dataList.add(new MaterialEntryData("1", "光伏电缆", "5000米", "今日进场1000米,累计3000米", "已送检,合格"));
|
||||
dataList.add(new MaterialEntryData("2", "水泥", "200吨", "今日进场50吨,累计150吨", "已送检,合格"));
|
||||
dataList.add(new MaterialEntryData("3", "钢筋", "100吨", "未进场,预计明日到货", "待送检"));
|
||||
dataList.add(new MaterialEntryData("4", "预埋件", "2000个", "今日进场500个,累计1500个", "已送检,合格"));
|
||||
return dataList;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
package org.dromara.progress.domain.vo.export;
|
||||
|
||||
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class MaterialInspectionData {
|
||||
private String no; // 序号
|
||||
private String materialName;// 材料名称
|
||||
private String usePart; // 用材部位
|
||||
private String inspectionOrg; // 送检机构
|
||||
private String inspectionRecord; // 送检记录
|
||||
|
||||
|
||||
// 生成模拟数据
|
||||
public static List<MaterialInspectionData> generateMockData() {
|
||||
List<MaterialInspectionData> dataList = new ArrayList<>();
|
||||
dataList.add(new MaterialInspectionData("1", "光伏电缆", "方阵连接", "广西质检中心", "2025-11-05送检,2025-11-06合格"));
|
||||
dataList.add(new MaterialInspectionData("2", "水泥", "基础浇筑", "百色市质检所", "2025-11-04送检,2025-11-05合格"));
|
||||
dataList.add(new MaterialInspectionData("3", "钢筋", "支架固定", "广西质检中心", "待送检,预计2025-11-08送检"));
|
||||
dataList.add(new MaterialInspectionData("4", "预埋件", "基础连接", "百色市质检所", "2025-11-03送检,2025-11-04合格"));
|
||||
return dataList;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,58 @@
|
||||
package org.dromara.progress.domain.vo.export;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class ParamData {
|
||||
|
||||
/**
|
||||
* 项目简介
|
||||
*/
|
||||
private String projectIntro;
|
||||
|
||||
/**
|
||||
* 记录人
|
||||
*/
|
||||
private String date;
|
||||
|
||||
/**
|
||||
* 记录人
|
||||
*/
|
||||
private String recorder;
|
||||
|
||||
/**
|
||||
* 气温
|
||||
*/
|
||||
private String temp;
|
||||
/**
|
||||
* 白天天气
|
||||
*/
|
||||
private String dayWeather;
|
||||
/**
|
||||
* 夜晚天气
|
||||
*/
|
||||
private String nightWeather;
|
||||
/**
|
||||
* 现场质量
|
||||
*/
|
||||
private String quality = "质量正常.可控。";
|
||||
/**
|
||||
* 现场安全
|
||||
*/
|
||||
private String safety = "安全正常.可控。";
|
||||
|
||||
/**
|
||||
* 图片地址
|
||||
*/
|
||||
private List<String> imgUrls1;
|
||||
|
||||
/**
|
||||
* 图片地址
|
||||
*/
|
||||
private List<String> imgUrls2;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,30 @@
|
||||
package org.dromara.progress.domain.vo.export;
|
||||
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ParticipantData {
|
||||
private String unit; // 参建单位
|
||||
private String leader; // 经理班子人员
|
||||
private String manager; // 主要管理技术人员
|
||||
private String other; // 其他人员
|
||||
private String remark; // 备注
|
||||
|
||||
|
||||
// 生成模拟数据
|
||||
public static List<ParticipantData> generateMockData() {
|
||||
List<ParticipantData> dataList = new ArrayList<>();
|
||||
dataList.add(new ParticipantData("田东公司项目建设管理部", "3人", "8人", "12人", "正常"));
|
||||
dataList.add(new ParticipantData("XX施工单位", "2人", "5人", "30人", "部分人员轮休"));
|
||||
dataList.add(new ParticipantData("XX监理单位", "1人", "2人", "0人", "正常"));
|
||||
return dataList;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,34 @@
|
||||
package org.dromara.progress.domain.vo.export;
|
||||
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ProgressData {
|
||||
private int num; // 序号
|
||||
private String project; // 项目
|
||||
private String design; // 设计值
|
||||
private String plan; // 今日施工计划
|
||||
private String complete; // 今日施工完成情况
|
||||
private String total; // 累计完成工程量
|
||||
private String process; // 施工形象及进度
|
||||
|
||||
|
||||
|
||||
public static List<ProgressData> generateMockData() {
|
||||
List<ProgressData> dataList = new ArrayList<>();
|
||||
dataList.add(new ProgressData(1, "土地流转(亩)", "217.36", "50", "45", "180", "已完成82.8%"));
|
||||
dataList.add(new ProgressData(2, "清表(亩)", "217.36", "40", "38", "150", "已完成69%"));
|
||||
dataList.add(new ProgressData(3, "支架安装(组)", "3200", "50", "45", "1200", "已完成37.5%"));
|
||||
dataList.add(new ProgressData(4, "组件安装(块)", "56000", "800", "750", "22000", "已完成39.3%"));
|
||||
return dataList;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
// ProjectData.java
|
||||
package org.dromara.progress.domain.vo.export;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ProjectData {
|
||||
private List<ProgressData> progressList;
|
||||
private List<ParticipantData> participantList;
|
||||
private List<EquipmentEntryData> equipmentEntryList;
|
||||
private List<MaterialEntryData> materialList;
|
||||
private List<MaterialInspectionData> inspectionList;
|
||||
private String projectName; // 项目名称
|
||||
private String projectDate; // 项目日期
|
||||
|
||||
}
|
||||
|
||||
@ -125,4 +125,25 @@ public class HseViolationRecord extends BaseEntity {
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
|
||||
/**
|
||||
* 任务批号
|
||||
*/
|
||||
private String jobKey;
|
||||
|
||||
/**
|
||||
* 任务批号
|
||||
*/
|
||||
private Integer version;
|
||||
|
||||
/**
|
||||
* 验证人id
|
||||
*/
|
||||
private Long validatorId;
|
||||
|
||||
/**
|
||||
* 验证人名字
|
||||
*/
|
||||
private String validatorName;
|
||||
|
||||
}
|
||||
|
||||
@ -537,10 +537,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
|
||||
|
||||
@Override
|
||||
public List<SysDeptVo> querListDept() {
|
||||
|
||||
List<SysDeptVo> sysDeptVos = baseMapper.selectDeptList(new LambdaQueryWrapper<SysDept>().eq(SysDept::getParentId, "100").eq(SysDept::getStatus, "0").eq(SysDept::getDelFlag, "0"));
|
||||
|
||||
|
||||
return sysDeptVos;
|
||||
}
|
||||
|
||||
|
||||
@ -17,6 +17,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.vehicle.domain.bo.VehVehicleInfoBo;
|
||||
import org.dromara.vehicle.domain.vo.VehVehicleInfoVo;
|
||||
import org.dromara.vehicle.domain.vo.VehVehicleTripVo;
|
||||
import org.dromara.vehicle.service.IVehVehicleInfoService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@ -45,6 +46,17 @@ public class VehVehicleInfoController extends BaseController {
|
||||
public TableDataInfo<VehVehicleInfoVo> list(VehVehicleInfoBo bo, PageQuery pageQuery) {
|
||||
return vehVehicleInfoService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
/**
|
||||
* 获取车辆行程信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
// @SaCheckPermission("vehicle:vehicleInfo:query")
|
||||
@GetMapping("/getTrip/{id}")
|
||||
public R<VehVehicleTripVo> getTripInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(vehVehicleInfoService.getTripInfo(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询车辆信息列表
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package org.dromara.vehicle.service;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import org.dromara.vehicle.domain.vo.VehVehicleInfoVo;
|
||||
import org.dromara.vehicle.domain.bo.VehVehicleInfoBo;
|
||||
import org.dromara.vehicle.domain.VehVehicleInfo;
|
||||
@ -7,6 +8,8 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.vehicle.domain.vo.VehVehicleTripVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
@ -81,4 +84,6 @@ public interface IVehVehicleInfoService extends IService<VehVehicleInfo>{
|
||||
* @return
|
||||
*/
|
||||
int unBindClient(VehVehicleInfoBo bo);
|
||||
|
||||
VehVehicleTripVo getTripInfo(Long id);
|
||||
}
|
||||
|
||||
@ -107,4 +107,11 @@ public interface IVehVehicleTripService extends IService<VehVehicleTrip> {
|
||||
* @return
|
||||
*/
|
||||
Long getTripId(Long id);
|
||||
|
||||
/**
|
||||
* 根据车辆id获取最新行程信息
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
VehVehicleTripVo getTripInfoByVehicleId(Long id);
|
||||
}
|
||||
|
||||
@ -18,9 +18,12 @@ import org.dromara.gps.service.IGpsEquipmentService;
|
||||
import org.dromara.gps.service.IGpsManmachineService;
|
||||
import org.dromara.vehicle.domain.VehVehicleInfo;
|
||||
import org.dromara.vehicle.domain.bo.VehVehicleInfoBo;
|
||||
import org.dromara.vehicle.domain.enums.VehVehicleInfoStatusEnum;
|
||||
import org.dromara.vehicle.domain.vo.VehVehicleInfoVo;
|
||||
import org.dromara.vehicle.domain.vo.VehVehicleTripVo;
|
||||
import org.dromara.vehicle.mapper.VehVehicleInfoMapper;
|
||||
import org.dromara.vehicle.service.IVehVehicleInfoService;
|
||||
import org.dromara.vehicle.service.IVehVehicleTripService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -50,6 +53,10 @@ public class VehVehicleInfoServiceImpl extends ServiceImpl<VehVehicleInfoMapper,
|
||||
@Lazy
|
||||
private IGpsManmachineService gpsManmachineService;
|
||||
|
||||
@Autowired
|
||||
@Lazy
|
||||
private IVehVehicleTripService vehVehicleTripService;
|
||||
|
||||
/**
|
||||
* 查询车辆信息
|
||||
*
|
||||
@ -209,4 +216,22 @@ public class VehVehicleInfoServiceImpl extends ServiceImpl<VehVehicleInfoMapper,
|
||||
.eq(GpsManmachine::getUserId, bo.getId()));
|
||||
return baseMapper.update(new LambdaUpdateWrapper<VehVehicleInfo>().set(VehVehicleInfo::getClientId,null).eq(VehVehicleInfo::getId,bo.getId()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过车辆id获取车辆的当前行程信息
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public VehVehicleTripVo getTripInfo(Long id) {
|
||||
VehVehicleInfoVo vehVehicleInfoVo = baseMapper.selectVoById(id);
|
||||
if (vehVehicleInfoVo == null) {
|
||||
throw new ServiceException("车辆信息为空");
|
||||
}
|
||||
if (!VehVehicleInfoStatusEnum.IN_USE.getValue().equals(vehVehicleInfoVo.getVehicleStatus())){
|
||||
return null;
|
||||
}
|
||||
|
||||
return vehVehicleTripService.getTripInfoByVehicleId(id);
|
||||
}
|
||||
}
|
||||
|
||||
@ -476,6 +476,14 @@ public class VehVehicleTripServiceImpl extends ServiceImpl<VehVehicleTripMapper,
|
||||
return baseMapper.getTripId(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public VehVehicleTripVo getTripInfoByVehicleId(Long id) {
|
||||
return baseMapper.selectVoOne(new LambdaQueryWrapper<VehVehicleTrip>()
|
||||
.eq(VehVehicleTrip::getVehicleId, id)
|
||||
.orderByDesc(VehVehicleTrip::getCreateTime)
|
||||
.last("limit 1"));
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建用户行程及其对应申请的展示列表
|
||||
*
|
||||
|
||||
@ -0,0 +1,27 @@
|
||||
package org.dromara.websocket.websocket.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import lombok.Data;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class VehicleVo {
|
||||
|
||||
/**
|
||||
* 纬度(精确到6位小数)
|
||||
*/
|
||||
@ExcelProperty(value = "纬度", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "精=确到6位小数")
|
||||
private BigDecimal locLatitude;
|
||||
|
||||
/**
|
||||
* 经度(精确到6位小数)
|
||||
*/
|
||||
@ExcelProperty(value = "经度", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "精=确到6位小数")
|
||||
private BigDecimal locLongitude;
|
||||
|
||||
}
|
||||
@ -0,0 +1,227 @@
|
||||
package org.dromara.websocket.websocket.service;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import jakarta.websocket.*;
|
||||
import jakarta.websocket.server.ServerEndpoint;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.bigscreen.service.ProjectBigScreenService;
|
||||
import org.dromara.common.core.utils.SpringUtils;
|
||||
import org.dromara.gps.domain.bo.GpsEquipmentSonBo;
|
||||
import org.dromara.gps.domain.vo.GpsEquipmentSonVo;
|
||||
import org.dromara.gps.service.IGpsEquipmentSonService;
|
||||
import org.dromara.websocket.websocket.domain.vo.VehicleVo;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
* 车辆轨迹 WebSocket 服务端(支持订阅消息)
|
||||
* 端点路径:/websocket/vehicle
|
||||
*/
|
||||
@Slf4j
|
||||
@ServerEndpoint("/websocket/vehicle") // 客户端连接时需携带订阅ID参数:ws://xxx/websocket/vehicle?subscriptionId=xxx
|
||||
@Component
|
||||
public class VehicleWebSocketServer {
|
||||
|
||||
// 1. 存储所有在线会话(sessionId -> Session)
|
||||
private static final Map<String, Session> ONLINE_SESSIONS = new ConcurrentHashMap<>();
|
||||
|
||||
// 2. 核心:订阅ID与会话的映射(subscriptionId -> Session)
|
||||
private static final Map<String, Session> SUBSCRIPTION_SESSIONS = new ConcurrentHashMap<>();
|
||||
|
||||
// 3. 反向映射:会话ID与订阅ID的映射(用于断开连接时清理订阅关系)
|
||||
private static final Map<String, String> SESSION_TO_SUBSCRIPTION = new ConcurrentHashMap<>();
|
||||
|
||||
// 当前会话对应的订阅ID(每个连接实例的专属变量)
|
||||
private String currentSubscriptionId;
|
||||
|
||||
|
||||
static {
|
||||
log.info("✅ 车辆轨迹 WebSocket 服务端已随项目启动初始化!端点路径:/websocket/vehicle");
|
||||
}
|
||||
|
||||
/**
|
||||
* 客户端连接时触发(解析订阅ID并建立映射关系)
|
||||
*/
|
||||
@OnOpen
|
||||
public void onOpen(Session session) {
|
||||
// 从连接URL的查询参数中获取订阅ID(客户端连接格式:ws://xxx/websocket/vehicle?subscriptionId=123)
|
||||
Map<String, List<String>> params = session.getRequestParameterMap();
|
||||
List<String> subscriptionIds = params.get("subscriptionId");
|
||||
if (subscriptionIds != null && !subscriptionIds.isEmpty()) {
|
||||
this.currentSubscriptionId = subscriptionIds.get(0); // 取第一个订阅ID
|
||||
// 建立映射关系
|
||||
SUBSCRIPTION_SESSIONS.put(currentSubscriptionId, session);
|
||||
SESSION_TO_SUBSCRIPTION.put(session.getId(), currentSubscriptionId);
|
||||
log.info("📌 客户端订阅成功!订阅ID:{},会话ID:{},当前订阅数:{}",
|
||||
currentSubscriptionId, session.getId(), SUBSCRIPTION_SESSIONS.size());
|
||||
} else {
|
||||
log.warn("📌 客户端连接未携带订阅ID!会话ID:{}", session.getId());
|
||||
}
|
||||
|
||||
// 存储会话到在线列表
|
||||
ONLINE_SESSIONS.put(session.getId(), session);
|
||||
log.info("📌 客户端连接成功!会话ID:{},当前在线数:{}", session.getId(), ONLINE_SESSIONS.size());
|
||||
|
||||
// 异步推送初始化数据(原有逻辑保留)
|
||||
CompletableFuture.runAsync(() -> {
|
||||
try {
|
||||
String[] split = currentSubscriptionId.split("-");
|
||||
IGpsEquipmentSonService service = SpringUtils.getBean(IGpsEquipmentSonService.class);
|
||||
GpsEquipmentSonBo bo = new GpsEquipmentSonBo();
|
||||
bo.setUserId(Long.parseLong(split[0]));
|
||||
bo.setTripId(Long.parseLong(split[1]));
|
||||
List<GpsEquipmentSonVo> list = service.getNewVehicleList(bo);
|
||||
if (list == null || list.isEmpty()) {
|
||||
session.getBasicRemote().sendText("初始化数据为空");
|
||||
log.warn("会话[{}]未获取到初始化数据", session.getId());
|
||||
return;
|
||||
}
|
||||
List<VehicleVo> vehicleVos = new ArrayList<>();
|
||||
for (GpsEquipmentSonVo ueClient : list) {
|
||||
VehicleVo vo = new VehicleVo();
|
||||
vo.setLocLatitude(ueClient.getLocLatitude());
|
||||
vo.setLocLongitude(ueClient.getLocLongitude());
|
||||
vehicleVos.add(vo);
|
||||
}
|
||||
session.getBasicRemote().sendText(JSONUtil.toJsonStr(vehicleVos));
|
||||
log.info("📤 已向会话[{}]推送初始化数据,长度:{}字节", session.getId(), vehicleVos.size());
|
||||
} catch (Exception e) {
|
||||
log.error("会话[{}]初始化数据处理失败", session.getId(), e);
|
||||
try {
|
||||
if (session.isOpen()) {
|
||||
session.getBasicRemote().sendText("初始化失败:" + e.getMessage());
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
log.error("会话[{}]推送错误信息失败", session.getId(), ex);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 接收客户端消息
|
||||
*/
|
||||
@OnMessage
|
||||
public void onMessage(String message, Session session) {
|
||||
log.info("📥 收到会话[{}](订阅ID:{})消息:{}", session.getId(), currentSubscriptionId, message);
|
||||
// 可选:回复客户端
|
||||
try {
|
||||
session.getBasicRemote().sendText("服务端已收到消息:" + message);
|
||||
} catch (IOException e) {
|
||||
log.error("📤 回复会话[{}]失败:{}", session.getId(), e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 客户端断开连接(清理订阅关系)
|
||||
*/
|
||||
@OnClose
|
||||
public void onClose(Session session, CloseReason reason) {
|
||||
// 1. 移除在线会话
|
||||
ONLINE_SESSIONS.remove(session.getId());
|
||||
// 2. 清理订阅关系
|
||||
String subscriptionId = SESSION_TO_SUBSCRIPTION.get(session.getId());
|
||||
if (subscriptionId != null) {
|
||||
SUBSCRIPTION_SESSIONS.remove(subscriptionId);
|
||||
SESSION_TO_SUBSCRIPTION.remove(session.getId());
|
||||
log.info("🔌 客户端订阅关系已清除!订阅ID:{},会话ID:{}", subscriptionId, session.getId());
|
||||
}
|
||||
log.info("🔌 客户端断开连接!会话ID:{},原因:{},当前在线数:{},当前订阅数:{}",
|
||||
session.getId(), reason.getReasonPhrase(),
|
||||
ONLINE_SESSIONS.size(), SUBSCRIPTION_SESSIONS.size());
|
||||
}
|
||||
|
||||
/**
|
||||
* 连接异常
|
||||
*/
|
||||
@OnError
|
||||
public void onError(Session session, Throwable error) {
|
||||
log.error("⚠️ 会话[{}](订阅ID:{})异常:{}", session.getId(), currentSubscriptionId, error.getMessage(), error);
|
||||
}
|
||||
|
||||
|
||||
// ------------------------------ 订阅消息发送工具方法(供外部调用) ------------------------------
|
||||
|
||||
/**
|
||||
* 向指定订阅ID的客户端发送消息
|
||||
* @param subscriptionId 订阅ID
|
||||
* @param message 消息内容
|
||||
* @return 是否发送成功
|
||||
*/
|
||||
public static boolean sendToSubscription(String subscriptionId, String message) {
|
||||
if (subscriptionId == null || message == null) {
|
||||
log.warn("⚠️ 订阅ID或消息为空,发送失败");
|
||||
return false;
|
||||
}
|
||||
// 从订阅映射中获取目标会话
|
||||
Session session = SUBSCRIPTION_SESSIONS.get(subscriptionId);
|
||||
if (session == null || !session.isOpen()) {
|
||||
log.warn("⚠️ 订阅ID[{}]对应的客户端未连接或已断开", subscriptionId);
|
||||
return false;
|
||||
}
|
||||
// 发送消息
|
||||
try {
|
||||
session.getBasicRemote().sendText(message);
|
||||
log.info("📤 已向订阅ID[{}]发送消息:{}", subscriptionId, message);
|
||||
return true;
|
||||
} catch (IOException e) {
|
||||
log.error("📤 向订阅ID[{}]发送消息失败", subscriptionId, e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 向所有订阅客户端广播消息
|
||||
* @param message 消息内容
|
||||
*/
|
||||
public static void broadcastToAllSubscriptions(String message) {
|
||||
if (SUBSCRIPTION_SESSIONS.isEmpty()) {
|
||||
log.warn("⚠️ 无订阅客户端,无需广播消息");
|
||||
return;
|
||||
}
|
||||
SUBSCRIPTION_SESSIONS.forEach((subscriptionId, session) -> {
|
||||
if (session.isOpen()) {
|
||||
try {
|
||||
session.getBasicRemote().sendText(message);
|
||||
log.info("📤 已向订阅ID[{}]广播消息", subscriptionId);
|
||||
} catch (IOException e) {
|
||||
log.error("📤 向订阅ID[{}]广播消息失败", subscriptionId, e);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前订阅数
|
||||
*/
|
||||
public static int getSubscriptionCount() {
|
||||
return SUBSCRIPTION_SESSIONS.size();
|
||||
}
|
||||
|
||||
// 原有工具方法保留
|
||||
public static void sendToAll(String message) {
|
||||
if (ONLINE_SESSIONS.isEmpty()) {
|
||||
log.warn("⚠️ 无在线客户端,无需发送消息");
|
||||
return;
|
||||
}
|
||||
ONLINE_SESSIONS.values().forEach(session -> {
|
||||
if (session.isOpen()) {
|
||||
try {
|
||||
session.getBasicRemote().sendText(message);
|
||||
} catch (IOException e) {
|
||||
log.error("📤 向会话[{}]发送消息失败:{}", session.getId(), e.getMessage());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static int getOnlineCount() {
|
||||
return ONLINE_SESSIONS.size();
|
||||
}
|
||||
}
|
||||
@ -10,6 +10,10 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.dto.QuerBiddingManagementDto;
|
||||
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.vo.QueryListXzdVo;
|
||||
import org.dromara.xzd.biddingManagement.biaoqianlixiang.service.IXzdBidPreProjectService;
|
||||
import org.dromara.xzd.biddingManagement.earnestMoney.domain.bo.XzdBidDepositPaymentBo;
|
||||
import org.dromara.xzd.biddingManagement.earnestMoney.domain.vo.XzdBidDepositPaymentByBqlx;
|
||||
import org.dromara.xzd.biddingManagement.earnestMoney.domain.vo.XzdBidDepositPaymentVo;
|
||||
import org.dromara.xzd.biddingManagement.earnestMoney.service.IXzdBidDepositPaymentService;
|
||||
import org.dromara.xzd.biddingManagement.earnestMoneyWithdraw.domain.bo.XzdBidDepositRecoveryBo;
|
||||
import org.dromara.xzd.biddingManagement.earnestMoneyWithdraw.domain.vo.XzdBidDepositRecoveryVo;
|
||||
import org.dromara.xzd.biddingManagement.earnestMoneyWithdraw.domain.vo.XzdBidDepositRecoveryXqVo;
|
||||
@ -43,6 +47,8 @@ public class XzdBidDepositRecoveryController extends BaseController {
|
||||
private final IXzdBidDepositRecoveryService xzdBidDepositRecoveryService;
|
||||
|
||||
private final IXzdBidPreProjectService xzdBidPreProjectService;
|
||||
private final IXzdBidDepositPaymentService xzdBidDepositPaymentService;
|
||||
|
||||
|
||||
/**
|
||||
* 查询投标保证金收回列表
|
||||
@ -119,4 +125,26 @@ public class XzdBidDepositRecoveryController extends BaseController {
|
||||
public QueryListXzdVo list(QuerBiddingManagementDto bo, PageQuery pageQuery) {
|
||||
return xzdBidPreProjectService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询投标保证金缴纳列表
|
||||
*/
|
||||
@SaCheckPermission(value = {"biddingManagement:bidDepositRecovery:list","biddingManagement:bidDepositRecovery:add","biddingManagement:bidDepositRecovery:edit"},mode = SaMode.OR)
|
||||
@GetMapping("/getxzdBidDepositPayment")
|
||||
public TableDataInfo<XzdBidDepositPaymentVo> list(XzdBidDepositPaymentBo bo, PageQuery pageQuery) {
|
||||
return xzdBidDepositPaymentService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取投标保证金缴纳详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission(value = {"biddingManagement:bidDepositRecovery:list","biddingManagement:bidDepositRecovery:add","biddingManagement:bidDepositRecovery:edit"},mode = SaMode.OR)
|
||||
@GetMapping("/get/{id}")
|
||||
public R<XzdBidDepositPaymentByBqlx> getInfoxzdBidDeposit(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdBidDepositPaymentService.queryById(id));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -15,7 +15,9 @@ import org.dromara.xzd.comprehensive.service.IXzdCsContractChangeService;
|
||||
import org.dromara.xzd.comprehensive.service.IXzdCsContractSuspendService;
|
||||
import org.dromara.xzd.domain.bo.XzdBusinessSealBo;
|
||||
import org.dromara.xzd.domain.vo.XzdBusinessSealVo;
|
||||
import org.dromara.xzd.domain.vo.XzdProjectVo;
|
||||
import org.dromara.xzd.service.IXzdBusinessSealService;
|
||||
import org.dromara.xzd.service.IXzdProjectService;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@ -55,6 +57,23 @@ public class XzdCsContractInformationController extends BaseController {
|
||||
@Lazy
|
||||
private final IXzdCsContractChangeService xzdCsContractChangeService;
|
||||
|
||||
@Lazy
|
||||
private final IXzdProjectService xzdProjectService;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取项目信息详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission(value = {"comprehensive:csContractInformation:add","comprehensive:csContractInformation:edit","comprehensive:csContractInformation:list"},mode = SaMode.OR)
|
||||
@GetMapping("/getProject/{id}")
|
||||
public R<XzdProjectVo> getProjectInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdProjectService.queryById(id));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询综合服务合同变更列表
|
||||
|
||||
@ -138,6 +138,19 @@ public class XzdSubcontractChangeController extends BaseController {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取分包合同信息详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission(value={"fenbaohetongbiangg:subcontractChange:list","fenbaohetongbiangg:subcontractChange:add","fenbaohetongbiangg:subcontractChange:edit"}, mode = SaMode.OR)
|
||||
@GetMapping("/xx/{id}")
|
||||
public R<XzdSubcontractVo> getInfoxx(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdSubcontractService.queryById(id));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -7,10 +7,17 @@ import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.dromara.xzd.contractManagement.fenbaohetongbiangg.domain.bo.XzdSubcontractChangeBo;
|
||||
import org.dromara.xzd.contractManagement.fenbaohetongbiangg.domain.vo.XzdSubcontractChangeVo;
|
||||
import org.dromara.xzd.contractManagement.fenbaohetongbiangg.service.IXzdSubcontractChangeService;
|
||||
import org.dromara.xzd.contractManagement.fenbaohetongxinxi.domain.vo.XzdJdztVo;
|
||||
import org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.domain.bo.XzdSubcontractTerminationBo;
|
||||
import org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.domain.vo.XzdSubcontractTerminationVo;
|
||||
import org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.service.IXzdSubcontractTerminationService;
|
||||
import org.dromara.xzd.domain.bo.XzdBusinessSealBo;
|
||||
import org.dromara.xzd.domain.vo.XzdBusinessSealVo;
|
||||
import org.dromara.xzd.service.IXzdBusinessSealService;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
@ -43,6 +50,56 @@ public class XzdSubcontractController extends BaseController {
|
||||
|
||||
private final IXzdBusinessSealService xzdBusinessSealService;
|
||||
|
||||
@Lazy
|
||||
private final IXzdSubcontractChangeService xzdSubcontractChangeService;
|
||||
|
||||
@Lazy
|
||||
private final IXzdSubcontractTerminationService xzdSubcontractTerminationService;
|
||||
|
||||
|
||||
/**
|
||||
* 查询分包合同终止列表
|
||||
*/
|
||||
@SaCheckPermission(value={"fenbaohetongxinxi:subcontract:list","fenbaohetongxinxi:subcontract:add","fenbaohetongxinxi:subcontract:edit"}, mode = SaMode.OR)
|
||||
@GetMapping("/listzz")
|
||||
public TableDataInfo<XzdSubcontractTerminationVo> list(XzdSubcontractTerminationBo bo, PageQuery pageQuery) {
|
||||
return xzdSubcontractTerminationService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询分包合同变更列表
|
||||
*/
|
||||
@SaCheckPermission(value={"fenbaohetongxinxi:subcontract:list","fenbaohetongxinxi:subcontract:add","fenbaohetongxinxi:subcontract:edit"}, mode = SaMode.OR)
|
||||
@GetMapping("/listbg")
|
||||
public TableDataInfo<XzdSubcontractChangeVo> list(XzdSubcontractChangeBo bo, PageQuery pageQuery) {
|
||||
return xzdSubcontractChangeService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取分包合同变更详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission(value={"fenbaohetongxinxi:subcontract:list","fenbaohetongxinxi:subcontract:add","fenbaohetongxinxi:subcontract:edit"}, mode = SaMode.OR)
|
||||
@GetMapping("/bg/{id}")
|
||||
public R<XzdSubcontractChangeVo> getInfobg(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdSubcontractChangeService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分包合同终止详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission(value={"fenbaohetongxinxi:subcontract:list","fenbaohetongxinxi:subcontract:add","fenbaohetongxinxi:subcontract:edit"}, mode = SaMode.OR)
|
||||
@GetMapping("/zz/{id}")
|
||||
public R<XzdSubcontractTerminationVo> getInfozz(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdSubcontractTerminationService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询印章帮助列表
|
||||
*/
|
||||
|
||||
@ -134,4 +134,19 @@ public class XzdSubcontractTerminationController extends BaseController {
|
||||
public TableDataInfo<XzdSubcontractVo> list(XzdSubcontractBo bo, PageQuery pageQuery) {
|
||||
return xzdSubcontractService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分包合同信息详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission(value={"fenbaohetongzhongzhi:subcontractTermination:list","fenbaohetongzhongzhi:subcontractTermination:add","fenbaohetongzhongzhi:subcontractTermination:edit"}, mode = SaMode.OR)
|
||||
@GetMapping("/xx/{id}")
|
||||
public R<XzdSubcontractVo> getInfoxx(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdSubcontractService.queryById(id));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -7,6 +7,12 @@ import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.dromara.xzd.contractManagement.caigoucontractTermination.domain.bo.XzdPurchaseContractSuspendBo;
|
||||
import org.dromara.xzd.contractManagement.caigoucontractTermination.domain.vo.XzdPurchaseContractSuspendVo;
|
||||
import org.dromara.xzd.contractManagement.caigoucontractTermination.service.IXzdPurchaseContractSuspendService;
|
||||
import org.dromara.xzd.contractManagement.caigouhetongbiangeng.domain.bo.XzdPurchaseContractAlterationBo;
|
||||
import org.dromara.xzd.contractManagement.caigouhetongbiangeng.domain.vo.XzdPurchaseContractAlterationVo;
|
||||
import org.dromara.xzd.contractManagement.caigouhetongbiangeng.service.IXzdPurchaseContractAlterationService;
|
||||
import org.dromara.xzd.contractManagement.fenbaohetongxinxi.domain.vo.XzdJdztVo;
|
||||
import org.dromara.xzd.contractManagement.purchaseManagement.domain.bo.XzdPurchaseContractInformationBo;
|
||||
import org.dromara.xzd.contractManagement.purchaseManagement.domain.vo.XzdJdztCghtVo;
|
||||
@ -15,6 +21,7 @@ import org.dromara.xzd.contractManagement.purchaseManagement.service.IXzdPurchas
|
||||
import org.dromara.xzd.domain.bo.XzdBusinessSealBo;
|
||||
import org.dromara.xzd.domain.vo.XzdBusinessSealVo;
|
||||
import org.dromara.xzd.service.IXzdBusinessSealService;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
@ -45,6 +52,55 @@ public class XzdPurchaseContractInformationController extends BaseController {
|
||||
|
||||
private final IXzdBusinessSealService xzdBusinessSealService;
|
||||
|
||||
@Lazy
|
||||
private final IXzdPurchaseContractAlterationService xzdPurchaseContractAlterationService;
|
||||
|
||||
|
||||
@Lazy
|
||||
private final IXzdPurchaseContractSuspendService xzdPurchaseContractSuspendService;
|
||||
|
||||
|
||||
/**
|
||||
* 获取采购合同终止详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission(value={"contractManagement:purchaseContractInformation:list","contractManagement:purchaseContractInformation:add","contractManagement:purchaseContractInformation:edit"}, mode = SaMode.OR)
|
||||
@GetMapping("/zz/{id}")
|
||||
public R<XzdPurchaseContractSuspendVo> getInfozz(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdPurchaseContractSuspendService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询采购合同终止列表
|
||||
*/
|
||||
@SaCheckPermission(value={"contractManagement:purchaseContractInformation:list","contractManagement:purchaseContractInformation:add","contractManagement:purchaseContractInformation:edit"}, mode = SaMode.OR)
|
||||
@GetMapping("/listzz")
|
||||
public TableDataInfo<XzdPurchaseContractSuspendVo> list(XzdPurchaseContractSuspendBo bo, PageQuery pageQuery) {
|
||||
return xzdPurchaseContractSuspendService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询采购合同变更列表
|
||||
*/
|
||||
@SaCheckPermission(value={"contractManagement:purchaseContractInformation:list","contractManagement:purchaseContractInformation:add","contractManagement:purchaseContractInformation:edit"}, mode = SaMode.OR)
|
||||
@GetMapping("/listbg")
|
||||
public TableDataInfo<XzdPurchaseContractAlterationVo> list(XzdPurchaseContractAlterationBo bo, PageQuery pageQuery) {
|
||||
return xzdPurchaseContractAlterationService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
/**
|
||||
* 获取采购合同变更详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission(value={"contractManagement:purchaseContractInformation:list","contractManagement:purchaseContractInformation:add","contractManagement:purchaseContractInformation:edit"}, mode = SaMode.OR)
|
||||
@GetMapping("/xx/{id}")
|
||||
public R<XzdPurchaseContractAlterationVo> getInfoxx(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdPurchaseContractAlterationService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询印章帮助列表
|
||||
*/
|
||||
|
||||
@ -43,6 +43,10 @@ public class XzdContractDetailsController extends BaseController {
|
||||
private final IXzdContractChangeService xzdContractChangeService;
|
||||
private final IXzdContractTerminationService xzdContractTerminationService;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询承包合同信息列表
|
||||
*/
|
||||
|
||||
@ -11,8 +11,11 @@ import org.dromara.xzd.domain.dto.XzdClienteleListDto;
|
||||
import org.dromara.xzd.domain.vo.XzdClienteleListSumVo;
|
||||
import org.dromara.xzd.domain.vo.XzdCustomertypeVo;
|
||||
import org.dromara.xzd.domain.vo.XzdPoiAreaVo;
|
||||
import org.dromara.xzd.domain.vo.XzdProjectVo;
|
||||
import org.dromara.xzd.service.IXzdCorrespondentList;
|
||||
import org.dromara.xzd.service.IXzdCustomertypeService;
|
||||
import org.dromara.xzd.service.IXzdProjectService;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@ -32,6 +35,9 @@ public class XzdCorrespondentList {
|
||||
|
||||
private final IXzdCustomertypeService iXzdCustomertypeService;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询区域列表
|
||||
*/
|
||||
@ -51,6 +57,9 @@ public class XzdCorrespondentList {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 客户信息修改
|
||||
*/
|
||||
|
||||
@ -5,6 +5,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.common.translation.annotation.Translation;
|
||||
import org.dromara.common.translation.annotation.TranslationType;
|
||||
import org.dromara.common.translation.constant.TransConstant;
|
||||
import org.dromara.xzd.domain.XzdProject;
|
||||
|
||||
@ -125,6 +126,7 @@ public class XzdProjectVo implements Serializable {
|
||||
/**
|
||||
* 管理组织名
|
||||
*/
|
||||
@Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "managementOrganization")
|
||||
private String managementOrganizationName;
|
||||
|
||||
/**
|
||||
@ -158,6 +160,8 @@ public class XzdProjectVo implements Serializable {
|
||||
@ExcelProperty(value = "项目责任人")
|
||||
private Long managerResponsible;
|
||||
|
||||
|
||||
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "managerResponsible")
|
||||
private String managerResponsibleName;
|
||||
|
||||
/**
|
||||
|
||||
@ -2,10 +2,14 @@ package org.dromara.xzd.publicUrl;
|
||||
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import cn.hutool.core.lang.tree.Tree;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.system.domain.bo.SysDeptBo;
|
||||
import org.dromara.system.domain.bo.SysUserBo;
|
||||
import org.dromara.system.domain.vo.SysDeptVo;
|
||||
import org.dromara.system.domain.vo.SysUserVo;
|
||||
@ -14,20 +18,17 @@ import org.dromara.system.service.ISysUserService;
|
||||
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.dto.QuerBiddingManagementDto;
|
||||
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.vo.QueryListXzdVo;
|
||||
import org.dromara.xzd.biddingManagement.biaoqianlixiang.service.IXzdBidPreProjectService;
|
||||
import org.dromara.xzd.domain.bo.XzdBusinessSealBo;
|
||||
import org.dromara.xzd.domain.bo.XzdProjectBo;
|
||||
import org.dromara.xzd.domain.bo.XzdSupplierInfoBo;
|
||||
import org.dromara.xzd.domain.bo.XzdSupplierOpenBankBo;
|
||||
import org.dromara.xzd.domain.dto.XzdClienteleListDto;
|
||||
import org.dromara.xzd.domain.vo.XzdClienteleListSumVo;
|
||||
import org.dromara.xzd.domain.vo.XzdProjectVo;
|
||||
import org.dromara.xzd.domain.vo.XzdSupplierInfoVo;
|
||||
import org.dromara.xzd.domain.vo.XzdSupplierOpenBankVo;
|
||||
import org.dromara.xzd.service.IXzdCorrespondentList;
|
||||
import org.dromara.xzd.service.IXzdProjectService;
|
||||
import org.dromara.xzd.service.IXzdSupplierInfoService;
|
||||
import org.dromara.xzd.service.IXzdSupplierOpenBankService;
|
||||
import org.dromara.xzd.domain.vo.*;
|
||||
import org.dromara.xzd.service.*;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@ -60,6 +61,14 @@ public class XzdPublicUrlConreoller {
|
||||
|
||||
private final ISysDeptService iSysDeptService;
|
||||
|
||||
private final IXzdBusinessSealService xzdBusinessSealService;
|
||||
|
||||
private final ISysDeptService deptService;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询项目信息列表
|
||||
@ -107,22 +116,72 @@ public class XzdPublicUrlConreoller {
|
||||
}
|
||||
|
||||
|
||||
// /**
|
||||
// * 获取用户列表
|
||||
// */
|
||||
/**
|
||||
* 获取用户列表
|
||||
*/
|
||||
@GetMapping("/userList")
|
||||
public TableDataInfo<SysUserVo> list(SysUserBo user, PageQuery pageQuery) {
|
||||
return userService.selectPageUserList(user, pageQuery);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
// /**
|
||||
// * 查询部门
|
||||
// */
|
||||
/**
|
||||
* 获取部门树列表
|
||||
*/
|
||||
@GetMapping("/deptTree")
|
||||
public R<List<Tree<Long>>> deptTree(SysDeptBo dept) {
|
||||
return R.ok(deptService.selectDeptTreeList(dept));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询部门
|
||||
*/
|
||||
// @GetMapping("/listDept")
|
||||
// public R<List<SysDeptVo>> list() {
|
||||
// List<SysDeptVo> list = iSysDeptService.querListDept();
|
||||
// return R.ok(list);
|
||||
// }
|
||||
|
||||
@GetMapping("/listDept")
|
||||
public R<List<SysDeptVo>> list() {
|
||||
List<SysDeptVo> list = iSysDeptService.querListDept();
|
||||
return R.ok(list);
|
||||
public R<List<SysDeptVo>> list(SysDeptBo dept) {
|
||||
List<SysDeptVo> depts = deptService.selectDeptList(dept);
|
||||
return R.ok(depts);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取供应商信息详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@GetMapping("/xzdSupplier/{id}")
|
||||
public R<XzdSupplierInfoVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdSupplierInfoService.queryById(id));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询印章帮助列表
|
||||
*/
|
||||
@GetMapping("/listBusinss")
|
||||
public TableDataInfo<XzdBusinessSealVo> list(XzdBusinessSealBo bo, PageQuery pageQuery) {
|
||||
return xzdBusinessSealService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 项目信息查询
|
||||
*/
|
||||
@GetMapping("/xmxx/{id}")
|
||||
public R<List<XzdProjectVo>> getXmxx( @PathVariable Long id) {
|
||||
return R.ok(xzdProjectService.getXmxx(id));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package org.dromara.xzd.service;
|
||||
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.xzd.domain.vo.XzdProjectVo;
|
||||
import org.dromara.xzd.domain.bo.XzdProjectBo;
|
||||
import org.dromara.xzd.domain.XzdProject;
|
||||
@ -69,4 +70,12 @@ public interface IXzdProjectService extends IService<XzdProject>{
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
String queryNameById(Long projectId);
|
||||
|
||||
/**
|
||||
* 查询项目信息
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 项目信息
|
||||
*/
|
||||
List<XzdProjectVo> getXmxx(Long id);
|
||||
}
|
||||
|
||||
@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
|
||||
import org.dromara.common.core.domain.event.ProcessEvent;
|
||||
import org.dromara.common.core.domain.event.ProcessTaskEvent;
|
||||
@ -513,6 +514,13 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
|
||||
return xzdProject != null ? xzdProject.getProjectName() : "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<XzdProjectVo> getXmxx(Long id) {
|
||||
List<XzdProjectVo> xzdProjectVos = this.getBaseMapper().selectVoList(new LambdaQueryWrapper<>(new XzdProject()).eq(XzdProject::getConstructionUnit, id));
|
||||
|
||||
return xzdProjectVos;
|
||||
}
|
||||
|
||||
public void setValue(XzdProjectVo entity){
|
||||
if (entity != null) {
|
||||
//项目概况
|
||||
|
||||
@ -65,6 +65,19 @@ public class SettlementOfSubcontractingContractController extends BaseController
|
||||
return xzdSubcontractService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取分包合同信息详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission(value = {"fenbaohetongjingdu:ofSubcontractingContract:list","fenbaohetongjingdu:ofSubcontractingContract:add","fenbaohetongjingdu:ofSubcontractingContract:edit"},mode = SaMode.OR)
|
||||
@GetMapping("/xx/{id}")
|
||||
public R<XzdSubcontractVo> getInfoxx(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdSubcontractService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询分包合同进度结算列表
|
||||
*/
|
||||
|
||||
@ -65,6 +65,19 @@ public class SettlementOfSubcontractingCompletionController extends BaseControll
|
||||
return settlementOfSubcontractingCompletionService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取分包合同信息详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission(value = {"fenbaohetongjungong:ofSubcontractingCompletion:list","fenbaohetongjungong:ofSubcontractingCompletion:add","fenbaohetongjungong:ofSubcontractingCompletion:edit"},mode = SaMode.OR)
|
||||
@GetMapping("/xx/{id}")
|
||||
public R<XzdSubcontractVo> getInfoxx(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdSubcontractService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出分包合同竣工结算列表
|
||||
*/
|
||||
|
||||
@ -57,6 +57,18 @@ public class SettlementOfSubcontractingAdjustmentController extends BaseControll
|
||||
// return xzdSubcontractService.queryPageList(bo, pageQuery);
|
||||
// }
|
||||
|
||||
/**
|
||||
* 获取分包合同竣工结算详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission(value = {"fenbaohetongtiaozheng:ofSubcontractingAdjustment:list","fenbaohetongtiaozheng:ofSubcontractingAdjustment:add","fenbaohetongtiaozheng:ofSubcontractingAdjustment:edit"},mode = SaMode.OR)
|
||||
@GetMapping("/jg/{id}")
|
||||
public R<SettlementOfSubcontractingCompletionVo> getInfojg(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(settlementOfSubcontractingCompletionService.queryById(id));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询分包合同竣工结算列表
|
||||
|
||||
@ -3,10 +3,20 @@ package org.dromara.xzd.zijinjihua.yueduzijinbiangeng.controller;
|
||||
import java.util.List;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
import org.dromara.xzd.domain.bo.XzdContractDetailsBo;
|
||||
import org.dromara.xzd.domain.vo.XzdContractDetailsVo;
|
||||
import org.dromara.xzd.domain.vo.XzdProjectVo;
|
||||
import org.dromara.xzd.service.IXzdContractDetailsService;
|
||||
import org.dromara.xzd.service.IXzdProjectService;
|
||||
import org.dromara.xzd.zijinjihua.yueduzijinjihua.domain.bo.FinancialRevenueExpenditurePlanBo;
|
||||
import org.dromara.xzd.zijinjihua.yueduzijinjihua.domain.vo.FinancialRevenueExpenditurePlanVo;
|
||||
import org.dromara.xzd.zijinjihua.yueduzijinjihua.service.IFinancialRevenueExpenditurePlanService;
|
||||
import org.hibernate.validator.internal.util.stereotypes.Lazy;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
@ -37,6 +47,66 @@ public class FinancialRevenuePlanAlterationController extends BaseController {
|
||||
|
||||
private final IFinancialRevenuePlanAlterationService financialRevenuePlanAlterationService;
|
||||
|
||||
private final IFinancialRevenueExpenditurePlanService financialRevenueExpenditurePlanService;
|
||||
|
||||
|
||||
private final IXzdContractDetailsService xzdContractDetailsService;
|
||||
|
||||
|
||||
|
||||
|
||||
@Lazy
|
||||
private final IXzdProjectService xzdProjectService;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取项目信息详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission(value = {"yueduzijinbiangeng:revenuePlanAlteration:list","yueduzijinbiangeng:revenuePlanAlteration:add","yueduzijinbiangeng:revenuePlanAlteration:edit"}, mode = SaMode.OR)
|
||||
@GetMapping("/getProject/{id}")
|
||||
public R<XzdProjectVo> getProjectInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdProjectService.queryById(id));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询月度资金计划列表
|
||||
*/
|
||||
@SaCheckPermission(value = {"yueduzijinbiangeng:revenuePlanAlteration:list","yueduzijinbiangeng:revenuePlanAlteration:add","yueduzijinbiangeng:revenuePlanAlteration:edit"}, mode = SaMode.OR)
|
||||
@GetMapping("/getlist")
|
||||
public TableDataInfo<FinancialRevenueExpenditurePlanVo> list(FinancialRevenueExpenditurePlanBo bo, PageQuery pageQuery) {
|
||||
return financialRevenueExpenditurePlanService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取承包合同信息详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission(value = {"yueduzijinbiangeng:revenuePlanAlteration:list","yueduzijinbiangeng:revenuePlanAlteration:add","yueduzijinbiangeng:revenuePlanAlteration:edit"}, mode = SaMode.OR)
|
||||
@GetMapping("/cb/{id}")
|
||||
public R<XzdContractDetailsVo> getInfocb(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdContractDetailsService.queryById(id));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询承包合同信息列表
|
||||
*/
|
||||
@SaCheckPermission(value = {"yueduzijinbiangeng:revenuePlanAlteration:list","yueduzijinbiangeng:revenuePlanAlteration:add","yueduzijinbiangeng:revenuePlanAlteration:edit"}, mode = SaMode.OR)
|
||||
@GetMapping("/listcb")
|
||||
public TableDataInfo<XzdContractDetailsVo> list(XzdContractDetailsBo bo, PageQuery pageQuery) {
|
||||
return xzdContractDetailsService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询月度资金计划变更列表
|
||||
*/
|
||||
|
||||
@ -2,12 +2,19 @@ package org.dromara.xzd.zijinjihua.yueduzijinjihua.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.dromara.xzd.domain.bo.XzdContractDetailsBo;
|
||||
import org.dromara.xzd.domain.vo.XzdContractDetailsVo;
|
||||
import org.dromara.xzd.domain.vo.XzdProjectVo;
|
||||
import org.dromara.xzd.service.IXzdContractDetailsService;
|
||||
import org.dromara.xzd.service.IXzdProjectService;
|
||||
import org.dromara.xzd.zijinjihua.yueduzijinjihua.service.IDetailOfEarningsService;
|
||||
import org.dromara.xzd.zijinjihua.yueduzijinjihua.service.IStatementOfExpendituresService;
|
||||
import org.hibernate.validator.internal.util.stereotypes.Lazy;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
@ -39,6 +46,55 @@ public class FinancialRevenueExpenditurePlanController extends BaseController {
|
||||
private final IFinancialRevenueExpenditurePlanService financialRevenueExpenditurePlanService;
|
||||
|
||||
|
||||
private final IXzdContractDetailsService xzdContractDetailsService;
|
||||
|
||||
|
||||
|
||||
|
||||
@Lazy
|
||||
private final IXzdProjectService xzdProjectService;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取项目信息详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission(value = {"yueduzijinjihua:revenueExpenditurePlan:list","yueduzijinjihua:revenueExpenditurePlan:add","yueduzijinjihua:revenueExpenditurePlan:edit"}, mode = SaMode.OR)
|
||||
@GetMapping("/getProject/{id}")
|
||||
public R<XzdProjectVo> getProjectInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdProjectService.queryById(id));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取承包合同信息详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission(value = {"yueduzijinjihua:revenueExpenditurePlan:list","yueduzijinjihua:revenueExpenditurePlan:add","yueduzijinjihua:revenueExpenditurePlan:edit"}, mode = SaMode.OR)
|
||||
@GetMapping("/cb/{id}")
|
||||
public R<XzdContractDetailsVo> getInfocb(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdContractDetailsService.queryById(id));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询承包合同信息列表
|
||||
*/
|
||||
@SaCheckPermission(value = {"yueduzijinjihua:revenueExpenditurePlan:list","yueduzijinjihua:revenueExpenditurePlan:add","yueduzijinjihua:revenueExpenditurePlan:edit"}, mode = SaMode.OR)
|
||||
@GetMapping("/listcb")
|
||||
public TableDataInfo<XzdContractDetailsVo> list(XzdContractDetailsBo bo, PageQuery pageQuery) {
|
||||
return xzdContractDetailsService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询月度资金计划列表
|
||||
*/
|
||||
|
||||
@ -57,6 +57,9 @@
|
||||
<if test="dto.unifiedSocialCreditCode != null and dto.unifiedSocialCreditCode != ''">
|
||||
AND a1.unified_social_credit_code = #{dto.unifiedSocialCreditCode}
|
||||
</if>
|
||||
<if test="dto.auditStatus != null and dto.auditStatus != ''">
|
||||
AND a1.audit_status = #{dto.auditStatus}
|
||||
</if>
|
||||
<if test="dto.poiAreaId != null and dto.poiAreaId != ''">
|
||||
AND a1.poi_area_id = #{dto.poiAreaId}
|
||||
</if>
|
||||
|
||||
Reference in New Issue
Block a user