package com.javaweb.platform.controller; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.javaweb.common.annotation.Log; import com.javaweb.common.config.ServerConfig; import com.javaweb.common.enums.BusinessType; import com.javaweb.platform.constant.ApplyStatus; import com.javaweb.platform.constant.DrillType; import com.javaweb.platform.domain.HoleInfo; import com.javaweb.platform.domain.ProjectApply; import com.javaweb.platform.domain.ProjectApplyHole; import com.javaweb.platform.domain.UserMsg; import com.javaweb.platform.mapper.ProjectInfoMapper; import com.javaweb.platform.service.IHoleInfoService; import com.javaweb.platform.service.IProjectApplyHoleService; import com.javaweb.platform.service.IProjectApplyService; import com.javaweb.platform.service.IProjectInfoService; import com.javaweb.platform.service.IUserMsgService; import com.javaweb.platform.utils.ValidcodeUtils; import com.javaweb.common.core.controller.BaseController; import com.javaweb.common.core.domain.AjaxResult; import com.javaweb.common.utils.StringUtils; import com.javaweb.common.utils.poi.ExcelUtil; import com.javaweb.hydrology.domain.HydrologyHoleInfo; import com.javaweb.hydrology.mapper.HydrologyHoleInfoMapper; import com.javaweb.hydrology.service.impl.HydrologyHoleInfoServiceImpl; import com.javaweb.common.core.page.TableDataInfo; /** * 申请信息Controller * * @author zmk * @date 2022-03-12 */ @Controller @RequestMapping("/platform/projectapply") public class ProjectApplyController extends BaseController { private String prefix = "platform/projectapply"; @Autowired private IProjectApplyService projectApplyService; @Autowired private IProjectInfoService projectInfoService; @Autowired private ProjectInfoMapper projectInfoMapper; @Autowired private IHoleInfoService holeInfoService; @Autowired private HydrologyHoleInfoMapper hydrologyHoleInfo; @Autowired private IProjectApplyHoleService projectApplyHoleService; @Autowired private ServerConfig serverConfig; @Autowired private IUserMsgService userMsgService; private Double radius =1000d; @Autowired private ValidcodeUtils validcodeUtils; @RequiresPermissions("platform:projectapply:view") @GetMapping() public String projectapply() { return prefix + "/projectapply"; } /** * 查询申请信息列表 */ @RequiresPermissions("platform:projectapply:list") @PostMapping("/list") @ResponseBody public TableDataInfo list(ProjectApply projectApply) { startPage(); List list = projectApplyService.selectProjectApplyList(projectApply); return getDataTable(list); } /** * 导出申请信息列表 */ @RequiresPermissions("platform:projectapply:export") @Log(title = "申请信息", businessType = BusinessType.EXPORT) @PostMapping("/export") @ResponseBody public AjaxResult export(ProjectApply projectApply) { List list = projectApplyService.selectProjectApplyList(projectApply); ExcelUtil util = new ExcelUtil(ProjectApply.class); return util.exportExcel(list, "projectapply"); } /** * 新增申请信息 */ @GetMapping("/add") public String add() { return prefix + "/add"; } /** * 新增保存申请信息 */ @RequiresPermissions("platform:projectapply:add") @Log(title = "申请信息", businessType = BusinessType.INSERT) @PostMapping("/add") @ResponseBody public AjaxResult addSave(ProjectApply projectApply) { return toAjax(projectApplyService.insertProjectApply(projectApply)); } /** * 修改申请信息 */ @GetMapping("/edit/{id}") public String edit(@PathVariable("id") String id, ModelMap mmap) { ProjectApply projectApply = projectApplyService.selectProjectApplyById(id); mmap.put("projectApply", projectApply); return prefix + "/edit"; } /** * 修改保存申请信息 */ @RequiresPermissions("platform:projectapply:edit") @Log(title = "申请信息", businessType = BusinessType.UPDATE) @PostMapping("/edit") @ResponseBody public AjaxResult editSave(ProjectApply projectApply) { return toAjax(projectApplyService.updateProjectApply(projectApply)); } /** * 删除申请信息 */ @RequiresPermissions("platform:projectapply:remove") @Log(title = "申请信息", businessType = BusinessType.DELETE) @PostMapping( "/remove") @ResponseBody public AjaxResult remove(String ids) { return toAjax(projectApplyService.deleteProjectApplyByIds(ids)); } /** * 拒绝申请 * @param id * @param mmap * @return */ @GetMapping("/reject") public String reject(String id, ModelMap mmap) { ProjectApply projectApply = projectApplyService.selectProjectApplyById(id); mmap.put("projectApply", projectApply); return prefix + "/reject"; } @PostMapping("/rejectSave") @ResponseBody public AjaxResult rejectSave(ProjectApply projectApply) { //更新状态 projectApply.setStatus(ApplyStatus.apply_reject); projectApplyService.updateProjectApply(projectApply); //更新钻孔状态 ProjectApplyHole projectApplyHole = new ProjectApplyHole(); projectApplyHole.setApplyId(projectApply.getId()); projectApplyHole.setStatus(ApplyStatus.apply_reject); projectApplyHoleService.updateProjectApplyStatus(projectApplyHole); //获取申请人信息 ProjectApply apply = projectApplyService.selectProjectApplyById(projectApply.getId()); String createBy = apply.getCreateBy(); UserMsg userMsg = new UserMsg(); userMsg.setUserName(createBy); userMsg.setCreateDate(new Date()); userMsg.setMsg(projectApply.getRejectMsg()); userMsgService.insertUserMsg(userMsg); //发送短信 try { validcodeUtils.sendMesgToPhone("6", apply.getTel()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return AjaxResult.success(ApplyStatus.apply_reject+"申请"); } @PostMapping("/approve") @ResponseBody public AjaxResult approve(String ids) { String [] idArray=ids.split(","); for(String id : idArray){ ProjectApply projectApply =new ProjectApply(); projectApply.setId(id); projectApply.setStatus(ApplyStatus.apply_approve); projectApplyService.updateProjectApply(projectApply); ProjectApplyHole projectApplyHole=new ProjectApplyHole(); projectApplyHole.setApplyId(id); projectApplyHole.setStatus(ApplyStatus.apply_approve); //更新申请记录 projectApplyHoleService.updateProjectApplyStatus(projectApplyHole); //获取申请人信息 ProjectApply apply = projectApplyService.selectProjectApplyById(id); String createBy = apply.getCreateBy(); UserMsg userMsg = new UserMsg(); userMsg.setUserName(createBy); userMsg.setCreateDate(new Date()); userMsg.setMsg("您申请的钻孔已通过,可以查看到对应的钻孔柱状图。对应的代建项目为【"+apply.getOnProjectName()+"】"); userMsgService.insertUserMsg(userMsg); try { validcodeUtils.sendMesgToPhone("5", apply.getTel()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } return AjaxResult.success(ApplyStatus.apply_approve); } /** * 定位申请信息 * @throws Exception */ @GetMapping("/location/{id}") public String location(@PathVariable("id") String id, ModelMap mmap) throws Exception { ProjectApply projectApply = projectApplyService.selectProjectApplyById(id); if(!StringUtils.isEmpty(projectApply.getFiles())){ String files =serverConfig.getUrl()+projectApply.getFiles(); projectApply.setFiles(files); } mmap.put("projectApply", projectApply);//项目位置 ProjectApplyHole applyHole=new ProjectApplyHole(); applyHole.setApplyId(projectApply.getId()); List applyHoles =projectApplyHoleService.selectProjectApplyHoleList(applyHole); List holeInfos =new ArrayList<>(); List dxs = new ArrayList<>();//地下水 //查找钻孔 for(ProjectApplyHole applyHole2 : applyHoles){ if(applyHole2.getHoleType() !=null && applyHole2.getHoleType().equals(DrillType.DXS.getInfo())){ Long lid = Long.valueOf(applyHole2.getHoleId()); dxs.add(hydrologyHoleInfo.selectHydrologyHoleInfoById(lid)); }else{ holeInfos.add(holeInfoService.selectHoleInfoById(applyHole2.getHoleId())); } } mmap.put("dxs", dxs);//项目位置 mmap.put("holeList", holeInfos);//项目位置 return prefix + "/location"; } /* * 地下水折线 */ @GetMapping("/dxs") public String dxs(String holeNum ,HttpServletRequest request, ModelMap mmap) { mmap.put("holeNum", holeNum); return prefix + "/dxs"; } @Autowired private HydrologyHoleInfoServiceImpl hydrologyHoleInfoServiceImpl; /* * 地下水折线 */ @PostMapping("/dxsChart") @ResponseBody public AjaxResult dxsChart(String holeNum ,HttpServletRequest request) { AjaxResult result = hydrologyHoleInfoServiceImpl.hydrologyChart(holeNum); return result; } }