package com.dy.pipIrrProject.divide;
|
|
import com.alibaba.excel.EasyExcel;
|
import com.alibaba.excel.support.ExcelTypeEnum;
|
import com.dy.common.aop.SsoAop;
|
import com.dy.common.webUtil.BaseResponse;
|
import com.dy.common.webUtil.BaseResponseUtils;
|
import com.dy.common.webUtil.QueryResultVo;
|
import com.dy.common.webUtil.ResultCodeMsg;
|
import com.dy.pipIrrGlobal.pojoBa.BaClient;
|
import com.dy.pipIrrGlobal.pojoPr.PrDivide;
|
import com.dy.pipIrrGlobal.voPr.VoDivide;
|
import com.dy.pipIrrGlobal.voSe.VoActiveCard;
|
import com.dy.pipIrrProject.result.ProjectResultCode;
|
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.media.Content;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.validation.Valid;
|
import lombok.RequiredArgsConstructor;
|
import lombok.SneakyThrows;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.http.MediaType;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.validation.BindingResult;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import java.io.IOException;
|
import java.io.UnsupportedEncodingException;
|
import java.net.URLEncoder;
|
import java.util.*;
|
|
/**
|
* @author ZhuBaoMin
|
* @date 2023/12/20 20:11
|
* @LastEditTime 2023/12/20 20:11
|
* @Description
|
*/
|
|
@Slf4j
|
@Tag(name = "分水房管理", description = "分水房操作")
|
@RestController
|
@RequestMapping(path="divide")
|
@RequiredArgsConstructor
|
public class DivideCtrl {
|
private final DivideSv divideSv;
|
|
/**
|
* 分页获取分水房记录
|
* @param vo
|
* @return
|
*/
|
@Operation(summary = "获得一页分水房记录", description = "返回一页分水房数据")
|
@ApiResponses(value = {
|
@ApiResponse(
|
responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
|
description = "返回一页开卡数据(BaseResponse.content:QueryResultVo[{}])",
|
content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
|
schema = @Schema(implementation = VoActiveCard.class))}
|
)
|
})
|
@GetMapping(path = "/getDivides")
|
@SsoAop()
|
public BaseResponse<QueryResultVo<List<VoDivide>>> getDivides(QueryVo vo){
|
try {
|
QueryResultVo<List<VoDivide>> res = divideSv.getDivides(vo);
|
if(res.itemTotal != null && res.itemTotal > 0) {
|
return BaseResponseUtils.buildSuccess(res);
|
}else {
|
return BaseResponseUtils.buildSuccess(ProjectResultCode.NO_DIVIDES.getMessage());
|
}
|
} catch (Exception e) {
|
log.error("获取开卡记录异常", e);
|
return BaseResponseUtils.buildException(e.getMessage()) ;
|
}
|
}
|
|
/**
|
* 根据分水房主键获取分水房对象
|
* @param id
|
* @return
|
*/
|
@Operation(summary = "获得一个分水房", description = "返回一个分水房数据")
|
@ApiResponses(value = {
|
@ApiResponse(
|
responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
|
description = "返回一页农户数据(BaseResponse.content:QueryResultVo[{}])",
|
content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
|
schema = @Schema(implementation = BaClient.class))}
|
)
|
})
|
@GetMapping(path = "/getone/{id}")
|
@SsoAop()
|
public BaseResponse<PrDivide> getOneDivide(@PathVariable("id") Long id){
|
try {
|
PrDivide res = divideSv.getOneDivide(id);
|
if(res != null) {
|
return BaseResponseUtils.buildSuccess(res);
|
}else {
|
return BaseResponseUtils.buildErrorMsg(ProjectResultCode.NO_DIVIDES.getMessage());
|
}
|
} catch (Exception e) {
|
log.error("查询农户异常", e);
|
return BaseResponseUtils.buildException(e.getMessage()) ;
|
}
|
}
|
|
/**
|
* 添加分水房记录
|
* @param po
|
* @param bindingResult
|
* @return
|
*/
|
@Operation(summary = "添加分水房记录", description = "添加分水房记录")
|
@ApiResponses(value = {
|
@ApiResponse(
|
responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
|
description = "操作结果:true:成功,false:失败(BaseResponse.content)",
|
content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
|
schema = @Schema(implementation = Boolean.class))}
|
)
|
})
|
@PostMapping(path = "add", consumes = MediaType.APPLICATION_JSON_VALUE)
|
@Transactional(rollbackFor = Exception.class)
|
@SsoAop()
|
public BaseResponse<Boolean> add(@RequestBody @Valid DtoDivide po, BindingResult bindingResult){
|
if(bindingResult != null && bindingResult.hasErrors()){
|
return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
|
}
|
// 接收村编号(主键)
|
Long villageId = po.getVillageId();
|
|
PrDivide prDivide = DtoToDividePojo.INSTANCT.po2vo(po);
|
|
if (villageId!=null){
|
/**
|
* 获取5级行政区划信息
|
*/
|
Map map_districts = Optional.ofNullable(divideSv.getDistrictsByVillageId(villageId)).orElse(new HashMap());
|
if(map_districts.size() <= 0) {
|
return BaseResponseUtils.buildErrorMsg("区划信息有误");
|
}
|
Long countryId = Long.parseLong(map_districts.get("countryId").toString());
|
Long townId = Long.parseLong(map_districts.get("townId").toString());
|
prDivide.setCountyid(countryId);
|
prDivide.setTownid(townId);
|
}
|
|
Date operateTime = new Date();
|
prDivide.setOperatedt(operateTime);
|
prDivide.setDeleted((byte)0);
|
Integer rec = Optional.ofNullable(divideSv.addDivide(prDivide)).orElse(0);
|
if(rec == 0) {
|
return BaseResponseUtils.buildErrorMsg(ProjectResultCode.DIVIDE_FAIL.getMessage());
|
}
|
return BaseResponseUtils.buildSuccess(true) ;
|
}
|
|
/**
|
* 根据分水房ID逻辑删除分水房
|
* @param map
|
* @return
|
*/
|
@Operation(summary = "删除一个分水房", description = "删除一个分水房数据")
|
@ApiResponses(value = {
|
@ApiResponse(
|
responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
|
description = "返回一页农户数据(BaseResponse.content:QueryResultVo[{}])",
|
content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
|
schema = @Schema(implementation = BaClient.class))}
|
)
|
})
|
|
//@GetMapping(path = "/delone/{id}")
|
@PostMapping(path = "delete", consumes = MediaType.APPLICATION_JSON_VALUE)
|
@SsoAop()
|
public BaseResponse<Boolean> deleteDivideById(@RequestBody Map map){
|
Long id = Optional.ofNullable(Long.parseLong(map.get("id").toString())).orElse(0L);
|
if(id == 0)
|
return BaseResponseUtils.buildException(ProjectResultCode.DELETE_DIVIDE_FAIL.getMessage());
|
|
try {
|
Integer res = Optional.ofNullable(divideSv.deleteDivideById(id)).orElse(0);
|
if(res == 0)
|
return BaseResponseUtils.buildErrorMsg(ProjectResultCode.DELETE_DIVIDE_FAIL.getMessage());
|
|
return BaseResponseUtils.buildSuccess(true);
|
} catch (Exception e) {
|
log.error("删除分水房异常", e);
|
return BaseResponseUtils.buildException(e.getMessage()) ;
|
}
|
}
|
|
/**
|
* 修改分水房
|
* @param po
|
* @param bindingResult
|
* @return
|
*/
|
@Operation(summary = "修改分水房记录", description = "修改分水房记录")
|
@ApiResponses(value = {
|
@ApiResponse(
|
responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
|
description = "操作结果:true:成功,false:失败(BaseResponse.content)",
|
content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
|
schema = @Schema(implementation = Boolean.class))}
|
)
|
})
|
@PostMapping(path = "update", consumes = MediaType.APPLICATION_JSON_VALUE)
|
@Transactional(rollbackFor = Exception.class)
|
@SsoAop()
|
public BaseResponse<Boolean> update(@RequestBody @Valid DtoDivide po, BindingResult bindingResult){
|
if(bindingResult != null && bindingResult.hasErrors()){
|
return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
|
}
|
|
// 接收村编号(主键)
|
Long villageId = po.getVillageId();
|
|
PrDivide prDivide = DtoToDividePojo.INSTANCT.po2vo(po);
|
|
if (villageId!=null){
|
/**
|
* 获取5级行政区划信息
|
*/
|
Map map_districts = Optional.ofNullable(divideSv.getDistrictsByVillageId(villageId)).orElse(new HashMap());
|
if(map_districts.size() <= 0) {
|
return BaseResponseUtils.buildErrorMsg("区划信息有误");
|
}
|
Long countryId = Long.parseLong(map_districts.get("countryId").toString());
|
Long townId = Long.parseLong(map_districts.get("townId").toString());
|
prDivide.setCountyid(countryId);
|
prDivide.setTownid(townId);
|
}
|
|
Date operateTime = new Date();
|
prDivide.setOperatedt(operateTime);
|
|
Integer rec = Optional.ofNullable(divideSv.updateByPrimaryKey(prDivide)).orElse(0);
|
if(rec == 0) {
|
return BaseResponseUtils.buildErrorMsg("分水房修改失败");
|
}
|
return BaseResponseUtils.buildSuccess(true) ;
|
}
|
|
/**
|
* 导出分水房列表
|
* @param response
|
* @param vo
|
*/
|
@SneakyThrows(IOException.class)
|
@RequestMapping(value = "/export", method = RequestMethod.GET)
|
public void export(HttpServletResponse response, QueryVo vo) {
|
setExcelRespProp(response, "分水房列表");
|
//List<VoDivide> memberList = LocalJsonUtil.getListFromJson("json/members.json", VoDivide.class);
|
List<VoDivide> memberList = divideSv.exportDivides(vo);
|
|
EasyExcel.write(response.getOutputStream())
|
.head(VoDivide.class)
|
.excelType(ExcelTypeEnum.XLSX)
|
.sheet("分水房列表")
|
.doWrite(memberList);
|
}
|
|
@SneakyThrows
|
@RequestMapping(value = "/importDivides", method = RequestMethod.POST)
|
@ResponseBody
|
public BaseResponse<Boolean> importDivides(@RequestPart("file") MultipartFile file) {
|
List<VoDivide> memberList = EasyExcel.read(file.getInputStream())
|
.head(VoDivide.class)
|
.sheet()
|
.doReadSync();
|
return BaseResponseUtils.buildSuccess(memberList) ;
|
}
|
|
/**
|
* 设置excel下载响应头属性
|
*/
|
private void setExcelRespProp(HttpServletResponse response, String rawFileName) throws UnsupportedEncodingException {
|
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
response.setCharacterEncoding("utf-8");
|
String fileName = URLEncoder.encode(rawFileName, "UTF-8").replaceAll("\\+", "%20");
|
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
|
}
|
}
|