diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/BaseInfoController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/BaseInfoController.java index 23567f38..180fd384 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/BaseInfoController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/BaseInfoController.java @@ -100,13 +100,11 @@ public class BaseInfoController { @GetMapping("/export-excel") @Operation(summary = "导出基地 Excel") @ApiAccessLog(operateType = EXPORT) - public void exportBaseInfoExcel(@Valid BaseInfoPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { + public void exportBaseInfoExcel(@Valid BaseInfoPageReqVO pageReqVO, HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = baseInfoService.getBaseInfoPage(pageReqVO).getList(); // 导出 Excel - ExcelUtils.write(response, "基地.xls", "数据", BaseInfoRespVO.class, - BeanUtils.toBean(list, BaseInfoRespVO.class)); + ExcelUtils.write(response, "基地.xls", "数据", BaseInfoRespVO.class, BeanUtils.toBean(list, BaseInfoRespVO.class)); } @GetMapping("/base/plot/list") diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/PlotInfoController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/PlotInfoController.java index b817c64b..6740ae15 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/PlotInfoController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/PlotInfoController.java @@ -1,7 +1,6 @@ package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo; 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; import jakarta.servlet.http.HttpServletResponse; @@ -24,6 +23,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.IMPORT; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.module.farm.enums.CommonConstants.PLOT_TYPE_NAME_MAP; @@ -33,6 +33,7 @@ import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; import cn.iocoder.yudao.module.farm.dal.dataobject.plotinfo.PlotInfoDO; import cn.iocoder.yudao.module.farm.service.plotinfo.PlotInfoService; +import org.springframework.web.multipart.MultipartFile; @Tag(name = "管理中心 - 基地规划 - 基地/地块") @RestController @@ -104,6 +105,22 @@ public class PlotInfoController { BeanUtils.toBean(list, PlotInfoRespVO.class)); } + @GetMapping("/plot-lessee/export-excel") + @Operation(summary = "导出户主 Excel") + @ApiAccessLog(operateType = EXPORT) + public void exportPlotLesseeInfoExcel(HttpServletResponse response) throws IOException { + List list = plotInfoService.getPlotLesseeInfo(); + // 导出 Excel + ExcelUtils.write(response, "户主.xls", "数据", PlotLesseeForExportExcelRespVO.class, list); + } + @GetMapping("/plot-lessee/import-excel") + @Operation(summary = "导入户主 Excel") + @ApiAccessLog(operateType = IMPORT) + public CommonResult importPlotLesseeInfoExcel(@RequestParam("file")MultipartFile file) throws IOException { + List list = ExcelUtils.read(file, PlotLesseeForImportExcelRespVO.class); + plotInfoService.setPlotLesseeInfo(list); + return success(true); + } } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/PlotLesseeDetailsRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/PlotLesseeDetailsRespVO.java index 92d0d34d..4b2f79f4 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/PlotLesseeDetailsRespVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/PlotLesseeDetailsRespVO.java @@ -32,12 +32,12 @@ public class PlotLesseeDetailsRespVO { private String leasePhone; @Schema(description = "租赁开始日期") - @ExcelProperty("租赁开始日期") + @ExcelProperty("租赁开始日期 (yyyy-MM-dd)") @JsonFormat(pattern = "yyyy-MM-dd") private String leaseStartDate; @Schema(description = "租赁接口日期") - @ExcelProperty("租赁接口日期") + @ExcelProperty("租赁接口日期 (yyyy-MM-dd)") @JsonFormat(pattern = "yyyy-MM-dd") private String leaseEndDate; diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/PlotLesseeForExportExcelRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/PlotLesseeForExportExcelRespVO.java new file mode 100644 index 00000000..c0f69ccc --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/PlotLesseeForExportExcelRespVO.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 地块户主 - 导出") +@Data +@ExcelIgnoreUnannotated +public class PlotLesseeForExportExcelRespVO { + + @Schema(description = "基地名称") + @ExcelProperty("基地名称") + private String baseName; + + @Schema(description = "地块名称") + @ExcelProperty("地块名称") + private String plotName; + + @Schema(description = "户主姓名") + @ExcelProperty("户主姓名") + private String leaseName; + + @Schema(description = "户主身份证号码") + @ExcelProperty("户主身份证号码") + private String leaseIdCard; + + @Schema(description = "户主手机号码") + @ExcelProperty("户主手机号码") + private String leasePhone; + + @Schema(description = "租赁开始日期") + @ExcelProperty("租赁开始日期 (yyyy-MM-dd)") + @JsonFormat(pattern = "yyyy-MM-dd") + private String leaseStartDate; + + @Schema(description = "租赁接口日期") + @ExcelProperty("租赁接口日期 (yyyy-MM-dd)") + @JsonFormat(pattern = "yyyy-MM-dd") + private String leaseEndDate; + + public PlotLesseeForExportExcelRespVO(String baseName, String plotName) { + this.baseName = baseName; + this.plotName = plotName; + } +} \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/PlotLesseeForImportExcelRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/PlotLesseeForImportExcelRespVO.java new file mode 100644 index 00000000..b085d2e1 --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/PlotLesseeForImportExcelRespVO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.baseinfo.vo; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.time.LocalDate; + +@Schema(description = "管理后台 - 地块户主 - 导入") +@Data +@Accessors(chain = false) +public class PlotLesseeForImportExcelRespVO { + + @Schema(description = "基地名称") + @ExcelProperty("基地名称") + private String baseName; + + @Schema(description = "地块名称") + @ExcelProperty("地块名称") + private String plotName; + + @Schema(description = "户主姓名") + @ExcelProperty("户主姓名") + private String leaseName; + + @Schema(description = "户主身份证号码") + @ExcelProperty("户主身份证号码") + private String leaseIdCard; + + @Schema(description = "户主手机号码") + @ExcelProperty("户主手机号码") + private String leasePhone; + + @Schema(description = "租赁开始日期") + @ExcelProperty("租赁开始日期 (yyyy-MM-dd)") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate leaseStartDate; + + @Schema(description = "租赁接口日期") + @ExcelProperty("租赁接口日期 (yyyy-MM-dd)") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate leaseEndDate; + + public PlotLesseeForImportExcelRespVO(String baseName, String plotName) { + this.baseName = baseName; + this.plotName = plotName; + } +} \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoService.java index 9455c5d5..cd1a8647 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoService.java @@ -1,9 +1,6 @@ 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.*; 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; @@ -59,6 +56,14 @@ public interface PlotInfoService { */ PlotLesseeInfoRespVO getPlotLesseeInfo(String id); + /** + * 导出户主信息 + * @return + */ + List getPlotLesseeInfo(); + + void setPlotLesseeInfo(List req); + /** * 通过基地ID获取地块集合 * @param baseId diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java index 4dd4bff9..b70d7bd3 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java @@ -193,6 +193,43 @@ public class PlotInfoServiceImpl implements PlotInfoService { return plotLesseeDetailsRespVO; } + @Override + public List getPlotLesseeInfo() { + + Map baseNameMap = baseInfoMapper.selectList().stream().collect(Collectors.toMap(BaseInfoDO::getId, BaseInfoDO::getName, (v1, v2) -> v1)); + List plotInfoDOS = plotInfoMapper.selectList(PlotInfoDO::getPlotLeaseStatus, CommonConstants.NO_CODE); + return plotInfoDOS.stream().map(p -> new PlotLesseeForExportExcelRespVO(baseNameMap.get(p.getBaseId()), p.getPlotName())).toList(); + + } + + @Override + public void setPlotLesseeInfo(List req) { + + Map collect = plotLesseeMapper.selectList().stream().collect(Collectors.toMap(PlotLesseeDO::getPlotName, PlotLesseeDO::getId, (v1, v2) -> v1)); + + for (PlotLesseeForImportExcelRespVO e : req) { + if (!collect.containsKey(e.getPlotName())) { + continue; + } + + if (ObjectUtils.isEmpty(e.getLeaseName()) || ObjectUtils.isEmpty(e.getLeaseIdCard()) + || ObjectUtils.isEmpty(e.getLeasePhone() ) || ObjectUtils.isEmpty(e.getLeaseStartDate()) || ObjectUtils.isEmpty(e.getLeaseEndDate())) { + continue; + } + + PlotLesseeDO target = new PlotLesseeDO(); + target.setId(collect.get(e.getPlotName())); + target.setLeaseName(e.getLeaseName()); + target.setLeaseIdCard(e.getLeaseIdCard()); + target.setLeasePhone(e.getLeasePhone()); + target.setLeaseStartDate(e.getLeaseStartDate()); + target.setLeaseEndDate(e.getLeaseEndDate()); + target.setLeaseStatus(CommonConstants.YES_CODE); + plotLesseeMapper.updateById(target); + } + + } + @Override public List getPlotInfos(String baseId) { // 员工集合 diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/utils/DocTemplateWithListUtil.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/utils/DocTemplateWithListUtil.java new file mode 100644 index 00000000..14f8b182 --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/utils/DocTemplateWithListUtil.java @@ -0,0 +1,9 @@ +package cn.iocoder.yudao.module.farm.utils; + +/** + * @description: .doc 模板工具类 + * @author: binda + * @date: 2025/10/23 16:37 + */ +public class DocTemplateWithListUtil { +}