fix (farm): 户主列表
- 新增
This commit is contained in:
@@ -56,107 +56,13 @@ public class HomeController {
|
||||
return success(res);
|
||||
}
|
||||
|
||||
|
||||
// @Operation(summary = "农场首页-天气信息-获取天气信息")
|
||||
// @GetMapping("/weather/{city}")
|
||||
// public CommonResult<String> getBaseNameList(@PathVariable("city") String city) {
|
||||
//
|
||||
// return success("天气信息!");
|
||||
// }
|
||||
|
||||
@PermitAll
|
||||
@Operation(summary = "农场首页-扫描二维码")
|
||||
@GetMapping("/scan-qr")
|
||||
@Parameter(name = "baseId", description = "基地ID")
|
||||
public CommonResult<QrDetailsRespVO> scanQrCodes(@RequestParam("baseId") String baseId) {
|
||||
// TODO: 2025/10/11 待实现
|
||||
QrDetailsRespVO mockData = new QrDetailsRespVO();
|
||||
|
||||
// 设置基地基本信息
|
||||
mockData.setBaseName("阳光农业示范基地");
|
||||
mockData.setBaseManagerName("张伟");
|
||||
mockData.setBaseArea(500);
|
||||
mockData.setPlotCount(3);
|
||||
|
||||
// 创建地块列表
|
||||
List<QrDetailsRespVO.PlotInfo> plotInfoList = new ArrayList<>();
|
||||
|
||||
// 第一个地块
|
||||
QrDetailsRespVO.PlotInfo plot1 = new QrDetailsRespVO.PlotInfo();
|
||||
plot1.setPlotName("蔬菜种植区A");
|
||||
plot1.setPlotManagerName("李丽");
|
||||
plot1.setPlotArea(150);
|
||||
|
||||
List<QrDetailsRespVO.DeviceInfo> deviceInfos1 = new ArrayList<>();
|
||||
QrDetailsRespVO.DeviceInfo device1 = new QrDetailsRespVO.DeviceInfo();
|
||||
device1.setDeviceUniqueId("SENSOR-001-XYZ-2024");
|
||||
device1.setDeviceTypeName("土壤湿度传感器");
|
||||
device1.setDeviceStateName(1);
|
||||
deviceInfos1.add(device1);
|
||||
|
||||
QrDetailsRespVO.DeviceInfo device2 = new QrDetailsRespVO.DeviceInfo();
|
||||
device2.setDeviceUniqueId("CAM-002-ABC-2024");
|
||||
device2.setDeviceTypeName("高清监控摄像头");
|
||||
device2.setDeviceStateName(1);
|
||||
deviceInfos1.add(device2);
|
||||
|
||||
plot1.setDeviceInfos(deviceInfos1);
|
||||
plotInfoList.add(plot1);
|
||||
|
||||
// 第二个地块
|
||||
QrDetailsRespVO.PlotInfo plot2 = new QrDetailsRespVO.PlotInfo();
|
||||
plot2.setPlotName("水果种植区B");
|
||||
plot2.setPlotManagerName("王强");
|
||||
plot2.setPlotArea(200);
|
||||
|
||||
List<QrDetailsRespVO.DeviceInfo> deviceInfos2 = new ArrayList<>();
|
||||
QrDetailsRespVO.DeviceInfo device3 = new QrDetailsRespVO.DeviceInfo();
|
||||
device3.setDeviceUniqueId("SENSOR-003-DEF-2024");
|
||||
device3.setDeviceTypeName("温湿度传感器");
|
||||
device3.setDeviceStateName(2);
|
||||
deviceInfos2.add(device3);
|
||||
|
||||
QrDetailsRespVO.DeviceInfo device4 = new QrDetailsRespVO.DeviceInfo();
|
||||
device4.setDeviceUniqueId("VALVE-004-GHI-2024");
|
||||
device4.setDeviceTypeName("智能灌溉阀门");
|
||||
device4.setDeviceStateName(4);
|
||||
deviceInfos2.add(device4);
|
||||
|
||||
plot2.setDeviceInfos(deviceInfos2);
|
||||
plotInfoList.add(plot2);
|
||||
|
||||
// 第三个地块
|
||||
QrDetailsRespVO.PlotInfo plot3 = new QrDetailsRespVO.PlotInfo();
|
||||
plot3.setPlotName("粮食作物区C");
|
||||
plot3.setPlotManagerName("赵敏");
|
||||
plot3.setPlotArea(150);
|
||||
|
||||
List<QrDetailsRespVO.DeviceInfo> deviceInfos3 = new ArrayList<>();
|
||||
QrDetailsRespVO.DeviceInfo device5 = new QrDetailsRespVO.DeviceInfo();
|
||||
device5.setDeviceUniqueId("SENSOR-005-JKL-2024");
|
||||
device5.setDeviceTypeName("光照强度传感器");
|
||||
device5.setDeviceStateName(3);
|
||||
deviceInfos3.add(device5);
|
||||
|
||||
QrDetailsRespVO.DeviceInfo device6 = new QrDetailsRespVO.DeviceInfo();
|
||||
device6.setDeviceUniqueId("WEATHER-006-MNO-2024");
|
||||
device6.setDeviceTypeName("微型气象站");
|
||||
device6.setDeviceStateName(1);
|
||||
deviceInfos3.add(device6);
|
||||
|
||||
QrDetailsRespVO.DeviceInfo device7 = new QrDetailsRespVO.DeviceInfo();
|
||||
device7.setDeviceUniqueId("CAM-007-PQR-2024");
|
||||
device7.setDeviceTypeName("全景监控摄像头");
|
||||
device7.setDeviceStateName(0);
|
||||
deviceInfos3.add(device7);
|
||||
|
||||
plot3.setDeviceInfos(deviceInfos3);
|
||||
plotInfoList.add(plot3);
|
||||
|
||||
// 设置地块列表到基地
|
||||
mockData.setPlotInfo(plotInfoList);
|
||||
|
||||
return success(mockData);
|
||||
QrDetailsRespVO res = homeService.scanQrCodes(baseId);
|
||||
return success(res);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package cn.iocoder.yudao.module.farm.controller.admin.home.vo;
|
||||
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo.PlotLesseeDetailsRespVO;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@@ -130,6 +131,8 @@ public class HomeInfo {
|
||||
private PlotOrCropInfo plotOrCropInfo;
|
||||
@Schema(description = "基地弹框信息")
|
||||
private List<PlotPopupFrame> plotPopupFrames;
|
||||
@Schema(description = "户主流转信息")
|
||||
private List<PlotLesseeDetailsRespVO> lesseeList;
|
||||
}
|
||||
|
||||
|
||||
@@ -149,9 +152,9 @@ public class HomeInfo {
|
||||
private String plotName;
|
||||
@Schema(description = "种植状态 (1: 在种; 2: 未种;)")
|
||||
private String growFlag;
|
||||
@Schema(description = "种植面积")
|
||||
@Schema(description = "种植面积") // 2025/10/15 种植面积 修改为 地块面积 , 字段名为修改!! 只是修改了取值!!!
|
||||
private Double growArea;
|
||||
@Schema(description = "在种作物数量")
|
||||
@Schema(description = "在种作物数量") // 2025/10/15 在种作物数量 修改为 物种数量 , 字段名未修改!! 只是修改了取值!!!
|
||||
private Integer beingCrop;
|
||||
@Schema(description = "生产计划任务数量")
|
||||
private Integer taskCount;
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package cn.iocoder.yudao.module.farm.controller.admin.home.vo;
|
||||
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo.v2.DeviceInfoDetailV2RespVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.digitalcockpit.vo.DeviceMonitorDataRespVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo.PlotLesseeDetailsRespVO;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@@ -41,23 +44,10 @@ public class QrDetailsRespVO {
|
||||
@Schema(description = "地块面积")
|
||||
private Integer plotArea;
|
||||
@Schema(description = "地块绑定设备信息列表")
|
||||
private List<DeviceInfo> deviceInfos;
|
||||
private List<DeviceMonitorDataRespVO> deviceInfos;
|
||||
@Schema(description = "地块绑定设备信息列表")
|
||||
private List<PlotLesseeDetailsRespVO> lesseeInfos;
|
||||
}
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public static class DeviceInfo {
|
||||
@Schema(description = "设备全局唯一标识(设备厂商提供)")
|
||||
private String deviceUniqueId;
|
||||
@Schema(description = "设备类型 (设备类型-名称)")
|
||||
private String deviceTypeName;
|
||||
@Schema(description = "设备状态:0-未激活,1-在线,2-离线,3-维护中,4-故障")
|
||||
private Integer deviceStateName;
|
||||
@Schema(description = "土壤墒情")
|
||||
private DeviceInfoDetailV2RespVO.SoilInfo soilInfo;
|
||||
@Schema(description = "水肥机")
|
||||
private DeviceInfoDetailV2RespVO.WfInfo wfInfo;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo;
|
||||
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo.PlotInfoPageReqVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo.PlotInfoRespVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo.PlotInfoSaveReqVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo.*;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo.wx.RegularPlotInfoRespVO;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import jakarta.validation.Valid;
|
||||
@@ -75,10 +73,10 @@ public class PlotInfoController {
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得地块")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
public CommonResult<PlotInfoRespVO> getPlotInfo(@RequestParam("id") String id) {
|
||||
PlotInfoDO plotInfo = plotInfoService.getPlotInfo(id);
|
||||
return success(BeanUtils.toBean(plotInfo, PlotInfoRespVO.class));
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
public CommonResult<PlotLesseeInfoRespVO> getPlotInfo(@RequestParam("id") String id) {
|
||||
PlotLesseeInfoRespVO plotInfo = plotInfoService.getPlotLesseeInfo(id);
|
||||
return success(plotInfo);
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
|
||||
@@ -13,19 +13,20 @@ import cn.idev.excel.annotation.*;
|
||||
@ExcelIgnoreUnannotated
|
||||
public class PlotInfoRespVO {
|
||||
|
||||
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11262")
|
||||
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("id")
|
||||
private String id;
|
||||
|
||||
@Schema(description = "所属基地ID", example = "1431")
|
||||
@Schema(description = "所属基地ID")
|
||||
@ExcelProperty("所属基地ID")
|
||||
private String baseId;
|
||||
private String baseName;
|
||||
@Schema(description = "地块ID", example = "4027")
|
||||
|
||||
@Schema(description = "地块ID")
|
||||
@ExcelProperty("地块ID")
|
||||
private String plotId;
|
||||
|
||||
@Schema(description = "地块名称", example = "王五")
|
||||
@Schema(description = "地块名称")
|
||||
@ExcelProperty("地块名称")
|
||||
private String plotName;
|
||||
|
||||
@@ -41,14 +42,22 @@ public class PlotInfoRespVO {
|
||||
@ExcelProperty("地块经纬度 (json字符串保存)")
|
||||
private String point;
|
||||
|
||||
@Schema(description = "技术员ID", example = "653")
|
||||
@Schema(description = "技术员ID")
|
||||
@ExcelProperty("技术员ID")
|
||||
private String employeeId;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@ExcelProperty("创建时间")
|
||||
|
||||
private LocalDateTime createTime;
|
||||
@Schema(description = "租户id")
|
||||
private String tenantId;
|
||||
|
||||
@Schema(description = "种植类型")
|
||||
private String type;
|
||||
|
||||
@Schema(description = " 租赁状态 (1: 已租; 0: 未租;)")
|
||||
private Integer plotLeaseStatus;
|
||||
private String plotLeaseStatusName;
|
||||
|
||||
}
|
||||
@@ -12,7 +12,7 @@ public class PlotInfoSaveReqVO {
|
||||
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11262")
|
||||
private String id;
|
||||
|
||||
@Schema(description = "所属基地ID", example = "1431")
|
||||
@Schema(description = "基地ID", example = "1431")
|
||||
private String baseId;
|
||||
|
||||
@Schema(description = "地块ID", example = "4027")
|
||||
@@ -32,8 +32,17 @@ public class PlotInfoSaveReqVO {
|
||||
|
||||
@Schema(description = "技术员ID", example = "653")
|
||||
private String employeeId;
|
||||
|
||||
@Schema(description = "租户id")
|
||||
private String tenantId;
|
||||
|
||||
@Schema(description = "种植类型")
|
||||
private String type;
|
||||
|
||||
@Schema(description = " 租赁状态 (1: 已租; 0: 未租;)")
|
||||
private Integer plotLeaseStatus;
|
||||
|
||||
@Schema(description = "租赁人信息")
|
||||
private PlotLesseeSaveReqVO plotLesseeSaveReqVO;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @description: TODO
|
||||
* @author: binda
|
||||
* @date: 2025/10/15 14:05
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class PlotLesseeDetailsRespVO {
|
||||
@Schema(description = "ID")
|
||||
private String id;
|
||||
@Schema(description = "姓名")
|
||||
private String leaseName;
|
||||
@Schema(description = "身份证号码")
|
||||
private String leaseIdCard;
|
||||
@Schema(description = "手机号码")
|
||||
private String leasePhone;
|
||||
@Schema(description = "租赁开始日期")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private String leaseStartDate;
|
||||
@Schema(description = "租赁接口日期")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private String leaseEndDate;
|
||||
@Schema(description = "租赁状态 (1: 当前租赁人; 2: 历史租赁人)")
|
||||
private String leaseStatus;
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Schema(description = "管理后台 - 地块")
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class PlotLesseeInfoRespVO {
|
||||
|
||||
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("id")
|
||||
private String id;
|
||||
|
||||
@Schema(description = "所属基地ID")
|
||||
@ExcelProperty("所属基地ID")
|
||||
private String baseId;
|
||||
private String baseName;
|
||||
|
||||
@Schema(description = "地块ID")
|
||||
@ExcelProperty("地块ID")
|
||||
private String plotId;
|
||||
|
||||
@Schema(description = "地块名称")
|
||||
@ExcelProperty("地块名称")
|
||||
private String plotName;
|
||||
|
||||
@Schema(description = "地块面积")
|
||||
@ExcelProperty("地块面积")
|
||||
private BigDecimal plotArea;
|
||||
|
||||
@Schema(description = "地块颜色")
|
||||
@ExcelProperty("地块颜色")
|
||||
private String plotColor;
|
||||
|
||||
@Schema(description = "地块经纬度 (json字符串保存)")
|
||||
@ExcelProperty("地块经纬度 (json字符串保存)")
|
||||
private String point;
|
||||
|
||||
@Schema(description = "技术员ID")
|
||||
@ExcelProperty("技术员ID")
|
||||
private String employeeId;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@ExcelProperty("创建时间")
|
||||
|
||||
private LocalDateTime createTime;
|
||||
@Schema(description = "租户id")
|
||||
private String tenantId;
|
||||
|
||||
@Schema(description = "种植类型")
|
||||
private String type;
|
||||
|
||||
@Schema(description = " 租赁状态 (1: 已租; 0: 未租;)")
|
||||
private Integer plotLeaseStatus;
|
||||
private String plotLeaseStatusName;
|
||||
|
||||
@Schema(description = "租赁人信息")
|
||||
private PlotLesseeDetailsRespVO plotLesseeDetailsRespVO;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @description: 租赁人信息
|
||||
* @author: binda
|
||||
* @date: 2025/10/15 11:23
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class PlotLesseeSaveReqVO {
|
||||
|
||||
@Schema(description = "ID")
|
||||
private String id;
|
||||
@Schema(description = "姓名")
|
||||
private String leaseName;
|
||||
@Schema(description = "身份证号码")
|
||||
private String leaseIdCard;
|
||||
@Schema(description = "手机号码")
|
||||
private String leasePhone;
|
||||
@Schema(description = "租赁开始日期")
|
||||
private String leaseStartDate;
|
||||
@Schema(description = "租赁接口日期")
|
||||
private String leaseEndDate;
|
||||
@Schema(description = "租赁状态 (1: 当前租赁人; 2: 历史租赁人)")
|
||||
private String leaseStatus;
|
||||
|
||||
}
|
||||
@@ -36,6 +36,8 @@ public class BaseInfoDO extends BaseDO {
|
||||
* 用户id用,隔开
|
||||
*/
|
||||
private String manager;
|
||||
@TableField(exist = false)
|
||||
private String managerName;
|
||||
/**
|
||||
* 面积
|
||||
*/
|
||||
|
||||
@@ -58,8 +58,17 @@ public class PlotInfoDO extends BaseDO {
|
||||
* 技术员ID
|
||||
*/
|
||||
private String employeeId;
|
||||
@TableField(exist = false)
|
||||
private String employeeName;
|
||||
|
||||
private String tenantId;
|
||||
|
||||
/**
|
||||
* 种植类型
|
||||
*/
|
||||
private String type;
|
||||
/**
|
||||
* 租赁状态 (1: 已租; 0: 未租;)
|
||||
*/
|
||||
private Integer plotLeaseStatus;
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package cn.iocoder.yudao.module.farm.dal.dataobject.plotinfo;
|
||||
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.*;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* @description: TODO
|
||||
* @author: binda
|
||||
* @date: 2025/10/15 14:00
|
||||
*/
|
||||
@TableName("farm_plot_lessee")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class PlotLesseeDO extends BaseDO {
|
||||
|
||||
@TableId(type = IdType.INPUT)
|
||||
private String id;
|
||||
private String leaseName;
|
||||
private String leaseIdCard;
|
||||
private String leasePhone;
|
||||
private LocalDate leaseStartDate;
|
||||
private LocalDate leaseEndDate;
|
||||
private Integer leaseStatus;
|
||||
|
||||
private String baseId;
|
||||
private String baseName;
|
||||
private String plotId;
|
||||
private String plotName;
|
||||
private String tenantId;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package cn.iocoder.yudao.module.farm.dal.mysql.plotinfo;
|
||||
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.plotinfo.PlotLesseeDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* @description: TODO
|
||||
* @author: binda
|
||||
* @date: 2025/10/15 13:59
|
||||
*/
|
||||
@Mapper
|
||||
public interface PlotLesseeMapper extends BaseMapperX<PlotLesseeDO> {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -48,6 +48,7 @@ public class CommonConstants {
|
||||
public static Map<Integer,String> BINDING_STATE_MAP = new HashMap<>();
|
||||
public static Map<String,String> NEWS_TYPE_MAP = new HashMap<>();
|
||||
public static Map<String,String> ONLINE_MAP = new HashMap<>();
|
||||
public static Map<Integer,String> LEASE_STATUS_MAP = new HashMap<>();
|
||||
|
||||
static {
|
||||
PLAN_MAP.put(PLAN_STATUS_1, "未开始");
|
||||
@@ -82,6 +83,9 @@ public class CommonConstants {
|
||||
|
||||
ONLINE_MAP.put("online", "在线");
|
||||
ONLINE_MAP.put("offline", "离线");
|
||||
|
||||
LEASE_STATUS_MAP.put(1, "已租");
|
||||
LEASE_STATUS_MAP.put(0, "未租");
|
||||
}
|
||||
|
||||
// 模型类型 (1:模型模板; 2:引用案例)
|
||||
|
||||
@@ -164,7 +164,12 @@ public class BaseInfoServiceImpl implements BaseInfoService {
|
||||
|
||||
@Override
|
||||
public BaseInfoDO getBaseInfo(String id) {
|
||||
return baseInfoMapper.selectById(id);
|
||||
List<PersonnelManagementDO> personnelList = personnelManagementMapper.selectList();
|
||||
Map<String, String> employeeMap = personnelList.stream().collect(Collectors.toMap(PersonnelManagementDO::getId, PersonnelManagementDO::getName, (v1, v2) -> v1));
|
||||
BaseInfoDO baseInfoDO = baseInfoMapper.selectById(id);
|
||||
baseInfoDO.setManagerName(employeeMap.get(baseInfoDO.getManager()));
|
||||
|
||||
return baseInfoDO;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -137,5 +137,6 @@ public interface DeviceInfoService {
|
||||
DeviceInfoRespVO getDeviceInfoByDp(String baseId);
|
||||
|
||||
List<DeviceMonitorDataRespVO> deviceList();
|
||||
List<DeviceMonitorDataRespVO> deviceList(String plotId);
|
||||
|
||||
}
|
||||
@@ -363,13 +363,16 @@ public class DeviceInfoServiceImpl implements DeviceInfoService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceMonitorDataRespVO> deviceList() {
|
||||
Long tenantId = getLoginUser().getTenantId();
|
||||
public List<DeviceMonitorDataRespVO> deviceList(String plotId) {
|
||||
LambdaQueryWrapperX<DeviceInfoDO> wrapperX = new LambdaQueryWrapperX<>();
|
||||
wrapperX.eq(DeviceInfoDO::getTenantId, tenantId);
|
||||
wrapperX.eq(DeviceInfoDO::getPlotId, plotId);
|
||||
wrapperX.eq(DeviceInfoDO::getDeleted, CommonConstants.NO_CODE);
|
||||
|
||||
List<DeviceInfoDO> doList = deviceInfoMapper.selectList(wrapperX);
|
||||
return execute(doList);
|
||||
}
|
||||
|
||||
private List<DeviceMonitorDataRespVO> execute(List<DeviceInfoDO> doList) {
|
||||
Map<String, List<DeviceInfoDO>> groupedByDeviceType = doList.stream().collect(Collectors.groupingBy(DeviceInfoDO::getDeviceType));
|
||||
|
||||
Map<String, String> typeCodeMap = deviceClassifyService.getTypeCodeMap();
|
||||
@@ -389,6 +392,18 @@ public class DeviceInfoServiceImpl implements DeviceInfoService {
|
||||
return res;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceMonitorDataRespVO> deviceList() {
|
||||
Long tenantId = getLoginUser().getTenantId();
|
||||
LambdaQueryWrapperX<DeviceInfoDO> wrapperX = new LambdaQueryWrapperX<>();
|
||||
wrapperX.eq(DeviceInfoDO::getTenantId, tenantId);
|
||||
wrapperX.eq(DeviceInfoDO::getDeleted, CommonConstants.NO_CODE);
|
||||
|
||||
List<DeviceInfoDO> doList = deviceInfoMapper.selectList(wrapperX);
|
||||
|
||||
return execute(doList);
|
||||
}
|
||||
|
||||
private List<DeviceMonitorDataRespVO.Row> getRealTimeList(String typeCode, List<DeviceInfoDO> doList) {
|
||||
List<DeviceMonitorDataRespVO.Row> rows = new ArrayList<>();
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.farm.service.home;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.home.vo.BaseNameVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.home.vo.HomeInfo;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.home.vo.OutlinedInfoVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.home.vo.QrDetailsRespVO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -24,4 +25,10 @@ public interface HomeService {
|
||||
|
||||
List<BaseNameVO> getBaseNameList();
|
||||
|
||||
/**
|
||||
* 二维码信息
|
||||
* @param baseId
|
||||
* @return
|
||||
*/
|
||||
QrDetailsRespVO scanQrCodes(String baseId);
|
||||
}
|
||||
|
||||
@@ -1,15 +1,20 @@
|
||||
package cn.iocoder.yudao.module.farm.service.home;
|
||||
|
||||
import cn.iocoder.yudao.framework.security.core.LoginUser;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.digitalcockpit.vo.DeviceMonitorDataRespVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.home.vo.BaseNameVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.home.vo.HomeInfo;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.home.vo.HomeInfo.*;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.home.vo.QrDetailsRespVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo.PlotLesseeDetailsRespVO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.baseinfo.BaseInfoDO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.plotinfo.PlotInfoDO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.productionplan.ProductionPlanDO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.specieslibrary.SpeciesLibraryDO;
|
||||
import cn.iocoder.yudao.module.farm.manager.equipmentproducer.service.DeviceService;
|
||||
import cn.iocoder.yudao.module.farm.service.baseinfo.BaseInfoService;
|
||||
import cn.iocoder.yudao.module.farm.service.cropFarmingCenter.CropFarmingCenterService;
|
||||
import cn.iocoder.yudao.module.farm.service.deviceinfo.DeviceInfoService;
|
||||
import cn.iocoder.yudao.module.farm.service.farmingrecord.FarmingRecordService;
|
||||
import cn.iocoder.yudao.module.farm.service.modelmanagement.ModelManagementService;
|
||||
import cn.iocoder.yudao.module.farm.service.personnelmanagement.PersonnelManagementService;
|
||||
@@ -46,8 +51,9 @@ public class HomeServiceImpl implements HomeService {
|
||||
private final ModelManagementService modelManagementService;
|
||||
private final SpeciesLibraryService speciesLibraryService;
|
||||
private final FarmingRecordService farmingRecordService;
|
||||
private final DeviceInfoService deviceService;
|
||||
|
||||
public HomeServiceImpl(BaseInfoService baseInfoService, PlotInfoService plotInfoService, ProductionPlanService productionPlanService, CropFarmingCenterService cropFarmingCenterService, PersonnelManagementService personnelManagementService, ModelManagementService modelManagementService, SpeciesLibraryService speciesLibraryService, FarmingRecordService farmingRecordService) {
|
||||
public HomeServiceImpl(BaseInfoService baseInfoService, PlotInfoService plotInfoService, ProductionPlanService productionPlanService, CropFarmingCenterService cropFarmingCenterService, PersonnelManagementService personnelManagementService, ModelManagementService modelManagementService, SpeciesLibraryService speciesLibraryService, FarmingRecordService farmingRecordService, DeviceInfoService deviceService) {
|
||||
this.baseInfoService = baseInfoService;
|
||||
this.plotInfoService = plotInfoService;
|
||||
this.productionPlanService = productionPlanService;
|
||||
@@ -56,6 +62,7 @@ public class HomeServiceImpl implements HomeService {
|
||||
this.modelManagementService = modelManagementService;
|
||||
this.speciesLibraryService = speciesLibraryService;
|
||||
this.farmingRecordService = farmingRecordService;
|
||||
this.deviceService = deviceService;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -100,7 +107,7 @@ public class HomeServiceImpl implements HomeService {
|
||||
|
||||
Integer taskCount = productionPlanService.getTodayTaskCount(baseId);
|
||||
Integer warningCount = 0; // TODO: 2025/9/1 告警数量
|
||||
Integer iotCount = 0; // TODO: 2025/9/1 物联设备数量
|
||||
Integer iotCount = deviceService.countDevice(baseId, getLoginUser().getTenantId().toString());
|
||||
return new StatisticalInfo(taskCount,warningCount,iotCount);
|
||||
}
|
||||
|
||||
@@ -147,6 +154,8 @@ public class HomeServiceImpl implements HomeService {
|
||||
PlotOrCropInfo plotOrCropInfo = this.getPlotOrCropInfoList(e,"地块详情",employeeName);
|
||||
// 地块浮框信息
|
||||
List<PlotPopupFrame> plotPopupFrame = this.getPlotPopupFrame(e.getId(), employeeNameMap);
|
||||
// 户主流转信息
|
||||
List<PlotLesseeDetailsRespVO> lesseeList = plotInfoService.getPlotLesseeList(e.getPlotId());
|
||||
|
||||
PlotInfo t = new PlotInfo();
|
||||
t.setBaseId(e.getBaseId());
|
||||
@@ -159,6 +168,7 @@ public class HomeServiceImpl implements HomeService {
|
||||
t.setPlotColor(e.getPlotColor());
|
||||
t.setPlotOrCropInfo(plotOrCropInfo);
|
||||
t.setPlotPopupFrames(plotPopupFrame);
|
||||
t.setLesseeList(lesseeList);
|
||||
targetList.add(t);
|
||||
}
|
||||
return targetList;
|
||||
@@ -171,9 +181,13 @@ public class HomeServiceImpl implements HomeService {
|
||||
}
|
||||
String growFlag = predictedArea == 0.0 ? GROW_FLAG_2 : GROW_FLAG_1;
|
||||
// 在种作物数量
|
||||
int growingCropCount = productionPlanService.getGrowingCropCount(e.getBaseId(), e.getPlotId());
|
||||
int growingCropCount = productionPlanService.getNotGrowingCropCount(e.getBaseId(), e.getPlotId());
|
||||
// 生产计划数量
|
||||
int taskCount = productionPlanService.getPlanCount(e.getPlotId());
|
||||
// 设备数量
|
||||
Integer iotCount = deviceService.countDevice(e.getBaseId() , getLoginUser().getTenantId().toString());
|
||||
// 物种数量
|
||||
// int speciesNum = modelManagementService.getSpeciesNum(getLoginUser().getTenantId().toString());
|
||||
|
||||
PlotOrCropInfo t = new PlotOrCropInfo();
|
||||
t.setLabel(label);
|
||||
@@ -182,10 +196,10 @@ public class HomeServiceImpl implements HomeService {
|
||||
t.setPlotId(e.getPlotId());
|
||||
t.setPlotName(e.getPlotName());
|
||||
t.setGrowFlag(growFlag);
|
||||
t.setGrowArea(predictedArea);
|
||||
t.setGrowArea(e.getPlotArea().doubleValue());
|
||||
t.setBeingCrop(growingCropCount);
|
||||
t.setTaskCount(taskCount);
|
||||
t.setLotCount(0); // TODO: 2025/8/31 物联设备数量
|
||||
t.setLotCount(iotCount);
|
||||
t.setManager(employeeName);
|
||||
t.setQrCodeUrl(e.getBaseId());
|
||||
t.setPlanInfos(this.getPlanInfoList(e.getBaseId(), e.getPlotId(), employeeName));
|
||||
@@ -247,6 +261,49 @@ public class HomeServiceImpl implements HomeService {
|
||||
return baseNameList.stream().map(e -> new BaseNameVO(e.getId(), e.getName())).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public QrDetailsRespVO scanQrCodes(String baseId) {
|
||||
BaseInfoDO bObj = baseInfoService.getBaseInfo(baseId);
|
||||
if (ObjectUtils.isEmpty(bObj)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
List<QrDetailsRespVO.PlotInfo> plotList = new ArrayList<>();
|
||||
List<PlotInfoDO> plotInfos = plotInfoService.getPlotInfos(baseId);
|
||||
for (PlotInfoDO p : plotInfos) {
|
||||
List<PlotLesseeDetailsRespVO> ls = this.getLs(p.getId());
|
||||
List<DeviceMonitorDataRespVO> ds = this.getDs(p.getId());
|
||||
|
||||
QrDetailsRespVO.PlotInfo targetP = new QrDetailsRespVO.PlotInfo();
|
||||
targetP.setPlotName(p.getPlotName());
|
||||
targetP.setPlotManagerName(p.getEmployeeName());
|
||||
targetP.setPlotArea(p.getPlotArea().intValue());
|
||||
targetP.setDeviceInfos(ds);
|
||||
targetP.setLesseeInfos(ls);
|
||||
plotList.add(targetP);
|
||||
}
|
||||
|
||||
|
||||
QrDetailsRespVO res = new QrDetailsRespVO();
|
||||
res.setBaseName(bObj.getName());
|
||||
res.setBaseManagerName(bObj.getManagerName());
|
||||
res.setBaseArea(bObj.getArea().intValue());
|
||||
res.setPlotCount(plotList.size());
|
||||
res.setPlotInfo(plotList);
|
||||
return res;
|
||||
}
|
||||
|
||||
private List<PlotLesseeDetailsRespVO> getLs(String plotId) {
|
||||
List<PlotLesseeDetailsRespVO> res = plotInfoService.getPlotLesseeList(plotId);
|
||||
return res;
|
||||
|
||||
}
|
||||
|
||||
private List<DeviceMonitorDataRespVO> getDs(String plotId) {
|
||||
List<DeviceMonitorDataRespVO> res = deviceService.deviceList(plotId);
|
||||
return res;
|
||||
}
|
||||
|
||||
private BaseOverviewInfo getCompanyInfo() {
|
||||
LoginUser user = getLoginUser();
|
||||
int baseCount = baseInfoService.getBaseCount(user.getTenantId()); // 基地数量
|
||||
|
||||
@@ -106,4 +106,11 @@ public interface ModelManagementService {
|
||||
int getFarmRecordCount(String speciesModelId);
|
||||
|
||||
ModelManagementDO getTopQuoteCount();
|
||||
|
||||
/**
|
||||
* 获取物种信息
|
||||
* @param toString
|
||||
* @return
|
||||
*/
|
||||
int getSpeciesNum(String toString);
|
||||
}
|
||||
@@ -617,6 +617,12 @@ public class ModelManagementServiceImpl implements ModelManagementService {
|
||||
return mostQuoted.orElse(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSpeciesNum(String toString) {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
private List<ModelCycleDO> getModelCycleListByModelId(String modelId) {
|
||||
LambdaQueryWrapperX<ModelCycleDO> wrapperXx = new LambdaQueryWrapperX<>();
|
||||
wrapperXx.eq(ModelCycleDO::getModelId, modelId);
|
||||
|
||||
@@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.farm.service.plotinfo;
|
||||
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo.PlotInfoPageReqVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo.PlotInfoSaveReqVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo.PlotLesseeDetailsRespVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo.PlotLesseeInfoRespVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo.wx.RegularPlotInfoRespVO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.plotinfo.PlotInfoDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
@@ -50,6 +52,13 @@ public interface PlotInfoService {
|
||||
*/
|
||||
PlotInfoDO getPlotInfo(String id);
|
||||
|
||||
/**
|
||||
* 地块&租户信息
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
PlotLesseeInfoRespVO getPlotLesseeInfo(String id);
|
||||
|
||||
/**
|
||||
* 通过基地ID获取地块集合
|
||||
* @param baseId
|
||||
@@ -104,4 +113,11 @@ public interface PlotInfoService {
|
||||
int countPlot(String baseId);
|
||||
|
||||
Long countPlotByTenantId(String tenantId);
|
||||
|
||||
/**
|
||||
* 获取地块下 有多户主信息
|
||||
* @param plotId
|
||||
* @return
|
||||
*/
|
||||
List<PlotLesseeDetailsRespVO> getPlotLesseeList(String plotId);
|
||||
}
|
||||
@@ -5,26 +5,31 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.framework.security.core.LoginUser;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo.PlotInfoPageReqVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo.PlotInfoSaveReqVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo.*;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo.wx.RegularPlotInfoRespVO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.baseinfo.BaseInfoDO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.plotinfo.PlotInfoDO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.plotinfo.PlotLesseeDO;
|
||||
import cn.iocoder.yudao.module.farm.dal.mysql.baseinfo.BaseInfoMapper;
|
||||
import cn.iocoder.yudao.module.farm.dal.mysql.plotinfo.PlotInfoMapper;
|
||||
import cn.iocoder.yudao.module.farm.dal.mysql.plotinfo.PlotLesseeMapper;
|
||||
import cn.iocoder.yudao.module.farm.enums.CommonConstants;
|
||||
import cn.iocoder.yudao.module.farm.service.personnelmanagement.PersonnelManagementService;
|
||||
import cn.iocoder.yudao.module.farm.service.productionplan.ProductionPlanService;
|
||||
import cn.iocoder.yudao.module.farm.utils.StrHelperUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
|
||||
import static cn.iocoder.yudao.module.farm.enums.CommonConstants.LEASE_STATUS_MAP;
|
||||
import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.*;
|
||||
|
||||
/**
|
||||
@@ -36,13 +41,22 @@ import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.*;
|
||||
@Validated
|
||||
public class PlotInfoServiceImpl implements PlotInfoService {
|
||||
|
||||
@Resource
|
||||
private BaseInfoMapper baseInfoMapper;
|
||||
@Resource
|
||||
private PlotInfoMapper plotInfoMapper;
|
||||
@Resource
|
||||
private ProductionPlanService productionPlanService;
|
||||
private final BaseInfoMapper baseInfoMapper;
|
||||
private final PlotInfoMapper plotInfoMapper;
|
||||
private final PlotLesseeMapper plotLesseeMapper;
|
||||
private final ProductionPlanService productionPlanService;
|
||||
private final PersonnelManagementService personnelManagementService;
|
||||
|
||||
|
||||
public PlotInfoServiceImpl(BaseInfoMapper baseInfoMapper, PlotInfoMapper plotInfoMapper, PlotLesseeMapper plotLesseeMapper, ProductionPlanService productionPlanService, PersonnelManagementService personnelManagementService) {
|
||||
this.baseInfoMapper = baseInfoMapper;
|
||||
this.plotInfoMapper = plotInfoMapper;
|
||||
this.plotLesseeMapper = plotLesseeMapper;
|
||||
this.productionPlanService = productionPlanService;
|
||||
this.personnelManagementService = personnelManagementService;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public String createPlotInfo(PlotInfoSaveReqVO createReqVO) {
|
||||
LoginUser user = getLoginUser();
|
||||
@@ -55,10 +69,17 @@ public class PlotInfoServiceImpl implements PlotInfoService {
|
||||
plotInfo.setTenantId(String.valueOf(user.getTenantId()));
|
||||
plotInfoMapper.insert(plotInfo);
|
||||
|
||||
PlotLesseeSaveReqVO plotLesseeSaveReqVO = createReqVO.getPlotLesseeSaveReqVO();
|
||||
PlotLesseeDO plotLesseeDO = BeanUtils.toBean(plotLesseeSaveReqVO, PlotLesseeDO.class);
|
||||
plotLesseeDO.setTenantId(String.valueOf(user.getTenantId()));
|
||||
plotLesseeDO.setLeaseStatus(CommonConstants.YES_CODE);
|
||||
plotLesseeMapper.insert(plotLesseeDO);
|
||||
|
||||
// 返回
|
||||
return plotInfo.getId();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void updatePlotInfo(PlotInfoSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
@@ -68,6 +89,17 @@ public class PlotInfoServiceImpl implements PlotInfoService {
|
||||
// 更新
|
||||
PlotInfoDO updateObj = BeanUtils.toBean(updateReqVO, PlotInfoDO.class);
|
||||
plotInfoMapper.updateById(updateObj);
|
||||
|
||||
// 重置所有租赁状态为: 未租
|
||||
List<PlotLesseeDO> doList = plotLesseeMapper.selectList("plot_id", updateReqVO.getId());
|
||||
doList.forEach(e -> e.setLeaseStatus(CommonConstants.NO_CODE));
|
||||
plotLesseeMapper.updateBatch(doList);
|
||||
|
||||
// 指定当前的租户状态为: 已租
|
||||
PlotLesseeSaveReqVO plotLesseeSaveReqVO = updateReqVO.getPlotLesseeSaveReqVO();
|
||||
PlotLesseeDO plotLesseeDO = BeanUtils.toBean(plotLesseeSaveReqVO, PlotLesseeDO.class);
|
||||
plotLesseeDO.setLeaseStatus(CommonConstants.YES_CODE);
|
||||
plotLesseeMapper.updateById(plotLesseeDO);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -113,9 +145,36 @@ public class PlotInfoServiceImpl implements PlotInfoService {
|
||||
return plotInfoDO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlotLesseeInfoRespVO getPlotLesseeInfo(String id) {
|
||||
LambdaQueryWrapperX<PlotLesseeDO> x = new LambdaQueryWrapperX<>();
|
||||
x.eq(PlotLesseeDO::getTenantId, getLoginUser().getTenantId().toString());
|
||||
x.eq(PlotLesseeDO::getDeleted, CommonConstants.NO_CODE);
|
||||
x.eq(PlotLesseeDO::getLeaseStatus, CommonConstants.YES_CODE);
|
||||
x.eq(PlotLesseeDO::getPlotId, id);
|
||||
PlotLesseeDO plotLesseeDO = plotLesseeMapper.selectOne(x);
|
||||
|
||||
PlotLesseeDetailsRespVO subLesseeInfo = new PlotLesseeDetailsRespVO();
|
||||
if (ObjectUtils.isNotEmpty(plotLesseeDO)) {
|
||||
subLesseeInfo = BeanUtils.toBean(plotLesseeDO, PlotLesseeDetailsRespVO.class);
|
||||
}
|
||||
|
||||
PlotInfoDO plotInfoDO = this.getPlotInfo(id);
|
||||
PlotLesseeInfoRespVO plotLesseeDetailsRespVO = BeanUtils.toBean(plotInfoDO, PlotLesseeInfoRespVO.class);
|
||||
plotLesseeDetailsRespVO.setPlotLesseeDetailsRespVO(subLesseeInfo);
|
||||
plotLesseeDetailsRespVO.setPlotLeaseStatusName(LEASE_STATUS_MAP.get(plotLesseeDetailsRespVO.getPlotLeaseStatus()));
|
||||
return plotLesseeDetailsRespVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PlotInfoDO> getPlotInfos(String baseId) {
|
||||
return plotInfoMapper.selectList("base_id", baseId);
|
||||
// 员工集合 <id,name>
|
||||
Map<String, String> employeeNameMap = personnelManagementService.getEmployeeNameMap();
|
||||
|
||||
List<PlotInfoDO> list = plotInfoMapper.selectList("base_id", baseId);
|
||||
list.forEach(e -> e.setEmployeeName(employeeNameMap.get(e.getEmployeeId())));
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -216,4 +275,15 @@ public class PlotInfoServiceImpl implements PlotInfoService {
|
||||
wrapperX.eq(PlotInfoDO::getDeleted, CommonConstants.NO_CODE);
|
||||
return plotInfoMapper.selectCount(wrapperX);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PlotLesseeDetailsRespVO> getPlotLesseeList(String plotId) {
|
||||
LambdaQueryWrapperX<PlotLesseeDO> x = new LambdaQueryWrapperX<>();
|
||||
x.eq(PlotLesseeDO::getDeleted, CommonConstants.NO_CODE);
|
||||
x.eq(PlotLesseeDO::getLeaseStatus, CommonConstants.NO_CODE);
|
||||
x.eq(PlotLesseeDO::getPlotId, plotId);
|
||||
List<PlotLesseeDO> list = plotLesseeMapper.selectList(x);
|
||||
|
||||
return BeanUtils.toBean(list, PlotLesseeDetailsRespVO.class);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package cn.iocoder.yudao.module.farm.service.plotinfo;
|
||||
|
||||
/**
|
||||
* @description: 租赁信息
|
||||
* @author: binda
|
||||
* @data: 2025/10/15 13:57
|
||||
*/
|
||||
public interface PlotLesseeService {
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package cn.iocoder.yudao.module.farm.service.plotinfo;
|
||||
|
||||
import cn.iocoder.yudao.module.farm.dal.mysql.plotinfo.PlotLesseeMapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @description: 租赁信息
|
||||
* @author: binda
|
||||
* @date: 2025/10/15 13:57
|
||||
*/
|
||||
@Service
|
||||
public class PlotLesseeServiceImpl implements PlotLesseeService {
|
||||
|
||||
@Resource
|
||||
private PlotLesseeMapper plotLesseeMaper;
|
||||
|
||||
|
||||
}
|
||||
@@ -129,6 +129,7 @@ public interface ProductionPlanService {
|
||||
*/
|
||||
int getGrowingCropCount(String baseId);
|
||||
int getGrowingCropCount(String baseId,String plotId);
|
||||
int getNotGrowingCropCount(String baseId, String plotId);
|
||||
int getGrowingCropCountByTenantId(String tenantId);
|
||||
|
||||
/**
|
||||
|
||||
@@ -264,6 +264,21 @@ public class ProductionPlanServiceImpl implements ProductionPlanService {
|
||||
.count();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNotGrowingCropCount(String baseId, String plotId) {
|
||||
QueryWrapper<ProductionPlanDO> qw = new QueryWrapper<>();
|
||||
qw.eq("base_id", baseId);
|
||||
qw.eq("plot_id", plotId);
|
||||
List<ProductionPlanDO> planList = productionPlanMapper.selectList(qw);
|
||||
return (int) planList.stream()
|
||||
.filter(Objects::nonNull)
|
||||
// .filter(plan -> Objects.equals(plan.getPlanStatus(), PLAN_STATUS_2))
|
||||
.map(ProductionPlanDO::getPlantSpeciesCode)
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.count();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getGrowingCropCountByTenantId(String tenantId) {
|
||||
QueryWrapper<ProductionPlanDO> qw = new QueryWrapper<>();
|
||||
|
||||
Reference in New Issue
Block a user