package cn.com.goldenwater.dcproj.controller.fsc; import cn.com.goldenwater.dcproj.dto.BisInspFscPblmDto; import cn.com.goldenwater.dcproj.model.BisInspAllRlationPers; import cn.com.goldenwater.dcproj.model.BisInspFscPblm; import cn.com.goldenwater.dcproj.model.GwComFile; import cn.com.goldenwater.dcproj.param.BisInspFscPblmParam; import cn.com.goldenwater.dcproj.param.FileParam; import cn.com.goldenwater.dcproj.service.BisInspAllRlationPersService; import cn.com.goldenwater.dcproj.service.BisInspFscPblmService; import cn.com.goldenwater.core.web.BaseController; import cn.com.goldenwater.core.web.BaseResponse; import cn.com.goldenwater.dcproj.service.GwComFileService; import cn.com.goldenwater.dcproj.utils.impexcel.ExpAndImpUtil; import cn.com.goldenwater.id.util.UuidUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.apache.commons.lang3.StringUtils; import com.github.pagehelper.PageInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import static cn.com.goldenwater.dcproj.utils.impexcel.ImpUtil.getDateFormatPath; /** * @author lune * @date 2019-7-19 */ @Api(value = "BIS 特定飞检问题信息表管理", tags = "BIS 特定飞检问题信息表管理") @RestController @RequestMapping("/bis/insp/fsc/pblm") public class BisInspFscPblmController extends BaseController { private Logger logger = LoggerFactory.getLogger(getClass()); @Value("${export.templatePath}") private String templatePath; @Value("${impExcel.basePath}") private String impExcelPath; @Autowired private BisInspFscPblmService bisInspFscPblmService; @Autowired private BisInspAllRlationPersService persService; @Autowired private RedisTemplate redisTemplate; @Autowired private GwComFileService gwComFileService; @ApiOperation(value = "添加/修改特定飞检问题信息表") @RequestMapping(value = "", method = RequestMethod.POST) public BaseResponse insert(@ApiParam(name = "bisInspFscPblm", value = "BisInspFscPblm", required = true) @RequestBody BisInspFscPblm bisInspFscPblm) { if (StringUtils.isBlank(bisInspFscPblm.getId())) { String uuid = UuidUtil.uuid(); // 生成uuid bisInspFscPblm.setId(uuid); bisInspFscPblmService.insert(bisInspFscPblm); } else { bisInspFscPblmService.updatePblm(bisInspFscPblm); } return buildSuccessResponse(bisInspFscPblm); } @ApiOperation(value = "根据ID删除特定飞检问题信息表") @RequestMapping(value = "/del/{id}", method = RequestMethod.GET) public BaseResponse delete(@ApiParam(name = "id", value = "id", required = true) @PathVariable String id) { int ret = bisInspFscPblmService.delete(id); return buildSuccessResponse(); } @ApiOperation(value = "根据ID获取特定飞检问题信息表(单表)") @RequestMapping(value = "/{id}", method = RequestMethod.GET) public BaseResponse get(@ApiParam(name = "id", value = "id", required = true) @PathVariable String id) { BisInspFscPblm bisInspFscPblm = bisInspFscPblmService.get(id); if (StringUtils.isNotBlank(bisInspFscPblm.getPersId())) { BisInspAllRlationPers pers = persService.get(bisInspFscPblm.getPersId()); if (pers != null) { bisInspFscPblm.setPersName(pers.getPersName()); } } List gwComFiles = gwComFileService.findFileByBiz(bisInspFscPblm.getId()); bisInspFscPblm.setGwComFiles(gwComFiles); return buildSuccessResponse(bisInspFscPblm); } @ApiOperation(value = "获取特定飞检问题信息表(列表所有)") @RequestMapping(value = "/list", method = RequestMethod.POST) public BaseResponse> list(@ApiParam(name = "bisInspFscPblmParam", value = "bisInspFscPblmParam", required = true) @RequestBody BisInspFscPblmParam bisInspFscPblmParam) { List bisInspFscPblmList = bisInspFscPblmService.findList(bisInspFscPblmParam); return buildSuccessResponse(bisInspFscPblmList); } @ApiOperation(value = "获取特定飞检问题信息表(列表--分页)") @RequestMapping(value = "/page", method = RequestMethod.POST) public BaseResponse> page(@ApiParam(name = "bisInspFscPblmParam", value = "bisInspFscPblmParam", required = true) @RequestBody BisInspFscPblmParam bisInspFscPblmParam) { PageInfo bisInspFscPblmList = bisInspFscPblmService.findPageInfo(bisInspFscPblmParam); return buildSuccessResponse(bisInspFscPblmList); } @ApiOperation(value = "下载飞检模板") @RequestMapping(value = "/downTemplate", method = {RequestMethod.GET, RequestMethod.POST}) public BaseResponse downTemplate(HttpServletResponse response, FileParam param) { try { List> pblmList = bisInspFscPblmService.findPblmList(param); ExpAndImpUtil.download(response, pblmList, templatePath + File.separator + param.getFileName(), param.getStartRow(), param.getSheetName()); } catch (Exception e) { return buildFailResponse(e); } return buildSuccessResponse(); } @ApiOperation(value = "上传飞检模板") @RequestMapping(value = "/uploadTemplate", method = RequestMethod.POST) public BaseResponse uploadTemplate(MultipartFile file, FileParam param) { String filaPath = ""; try { filaPath = ExpAndImpUtil.upload(file, getDateFormatPath(impExcelPath)); } catch (Exception e) { return buildFailResponse(e); } return buildSuccessResponse(filaPath); } @ApiOperation(value = "解析文件上传数据") @RequestMapping(value = "/parseUpload", method = RequestMethod.POST) public BaseResponse> parseUpload(FileParam param) { Map map = new LinkedHashMap<>(); try { List> list = ExpAndImpUtil.parseData(param.getPath(), param.getStartRow(), BisInspFscPblmDto.class); if (list.size() > 0) { String uuid = UuidUtil.uuid(); redisTemplate.opsForList().rightPushAll(uuid, list); map.put("dataId", uuid); } map.put("list", list); } catch (IOException e) { buildFailResponse(e.getMessage()); } return buildSuccessResponse(map); } @ApiOperation(value = "文件数据入库") @RequestMapping(value = "/insertIntoData", method = RequestMethod.POST) public BaseResponse insertIntoData(FileParam param) { if (StringUtils.isBlank(param.getDataId())) { return buildFailResponse(); } List> list = redisTemplate.opsForList().range(param.getDataId(), 0, -1); redisTemplate.delete(param.getDataId()); if (bisInspFscPblmService.insertIntoData(list) == 0) { return buildFailResponse(); } return buildSuccessResponse(); } }