PlanQuarterController.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. package com.ozs.web.controller.plan;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.ozs.common.annotation.Log;
  5. import com.ozs.common.constant.ModularConstans;
  6. import com.ozs.common.core.controller.BaseController;
  7. import com.ozs.common.core.domain.AjaxResult;
  8. import com.ozs.common.core.domain.model.LoginUser;
  9. import com.ozs.common.enums.BusinessType;
  10. import com.ozs.common.enums.DataIsDelete;
  11. import com.ozs.common.utils.DateUtils;
  12. import com.ozs.common.utils.PageUtils;
  13. import com.ozs.common.utils.poi.ExcelUtil;
  14. import com.ozs.framework.web.service.TokenService;
  15. import com.ozs.plan.doman.PlanQuarter;
  16. import com.ozs.plan.doman.vo.requestVo.PlanQuarterStandardVo;
  17. import com.ozs.plan.doman.vo.responseVo.PlanQuarterResponseVo;
  18. import com.ozs.plan.service.PlanQuarterService;
  19. import com.ozs.plan.service.impl.PlanQuarterServiceImpl;
  20. import io.swagger.annotations.Api;
  21. import io.swagger.annotations.ApiOperation;
  22. import lombok.extern.slf4j.Slf4j;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.security.access.prepost.PreAuthorize;
  25. import org.springframework.util.ObjectUtils;
  26. import org.springframework.web.bind.annotation.PostMapping;
  27. import org.springframework.web.bind.annotation.RequestBody;
  28. import org.springframework.web.bind.annotation.RequestMapping;
  29. import org.springframework.web.bind.annotation.RestController;
  30. import javax.servlet.http.HttpServletRequest;
  31. import javax.servlet.http.HttpServletResponse;
  32. import java.io.InputStream;
  33. import java.text.SimpleDateFormat;
  34. import java.util.ArrayList;
  35. import java.util.Date;
  36. import java.util.List;
  37. /**
  38. * 季度计划信息控制层
  39. *
  40. * @author buzhanyi
  41. */
  42. @Api(tags = "季度计划")
  43. @RestController
  44. @Slf4j
  45. @RequestMapping("/plan/quarter")
  46. public class PlanQuarterController extends BaseController {
  47. @Autowired
  48. private PlanQuarterService quarterService;
  49. @Autowired
  50. private PlanQuarterServiceImpl quarterServiceImpl;
  51. @Autowired
  52. private TokenService tokenService;
  53. @ApiOperation(value = "查询季度计划")
  54. @PostMapping("/list")
  55. @Log(title = ModularConstans.planQuarter, businessType = BusinessType.QUERY)
  56. @PreAuthorize("@ss.hasPermi('plan:quarter:list')")
  57. public AjaxResult list(@RequestBody PlanQuarterStandardVo vo, HttpServletRequest request) {
  58. List<PlanQuarterResponseVo> planQuarterList = new ArrayList<>();
  59. try {
  60. LoginUser loginUser = tokenService.getLoginUser(request);
  61. LambdaQueryWrapper<PlanQuarter> lw = new LambdaQueryWrapper<>();
  62. if (!loginUser.getUserId().equals(Long.valueOf("1"))) {
  63. lw.eq(PlanQuarter::getPurchaseDeptId, loginUser.getDeptId());
  64. }
  65. lw.eq(PlanQuarter::getPlanType, "0");
  66. lw.eq(PlanQuarter::getDelFlay, DataIsDelete.DataNOTDelete.getCode());
  67. if (!ObjectUtils.isEmpty(vo.getProjectName())) {
  68. lw.like(PlanQuarter::getProjectName, vo.getProjectName());
  69. }
  70. if (!ObjectUtils.isEmpty(vo.getPurchaseServices())) {
  71. lw.eq(PlanQuarter::getPurchaseServices, vo.getPurchaseServices());
  72. }
  73. if (!ObjectUtils.isEmpty(vo.getProjectStatus())) {
  74. lw.eq(PlanQuarter::getProjectStatus, vo.getProjectStatus());
  75. }
  76. if (!ObjectUtils.isEmpty(vo.getParams())) {
  77. if (!ObjectUtils.isEmpty(vo.getParams().get("beginTime"))) {
  78. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
  79. Date ofMonth = dateFormat.parse(vo.getParams().get("beginTime").toString() + "-01");
  80. lw.ge(PlanQuarter::getPlanDemandSubTime, ofMonth);
  81. }
  82. if (!ObjectUtils.isEmpty(vo.getParams().get("endTime"))) {
  83. SimpleDateFormat dateFormaH = new SimpleDateFormat("yyyy-MM");
  84. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
  85. SimpleDateFormat dateFormatT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
  86. Date ofMonth = DateUtils.getLastDayOfMonth(dateFormaH.parse(vo.getParams().get("endTime").toString()));
  87. Date parse = dateFormatT.parse(dateFormat.format(ofMonth) + " 23:59:59:999");
  88. lw.le(PlanQuarter::getPlanDemandSubTime, parse);
  89. }
  90. }
  91. lw.orderBy(true, false, PlanQuarter::getCreateTime);
  92. List<PlanQuarter> list = quarterService.list(lw);
  93. planQuarterList = quarterServiceImpl.changeTo(list);
  94. } catch (Exception e) {
  95. e.printStackTrace();
  96. }
  97. Page pages = PageUtils.getPages(vo.getPageNum().intValue(), vo.getPageSize().intValue(), planQuarterList);
  98. return AjaxResult.success(pages);
  99. }
  100. @ApiOperation(value = "审核单位查询季度计划")
  101. @PostMapping("/examineList")
  102. @PreAuthorize("@ss.hasPermi('plan:quarter:examineList')")
  103. @Log(title = ModularConstans.planQuarter, businessType = BusinessType.QUERY)
  104. public AjaxResult examineList(@RequestBody PlanQuarterStandardVo vo, HttpServletRequest request) {
  105. List<PlanQuarterResponseVo> planQuarterList = new ArrayList<>();
  106. try {
  107. LoginUser loginUser = tokenService.getLoginUser(request);
  108. vo.setCreated(String.valueOf(loginUser.getUserId()));
  109. vo.setPurchaseDeptId(String.valueOf(loginUser.getDeptId()));
  110. List<PlanQuarter> planYears = quarterService.queryPage(vo);
  111. if (!ObjectUtils.isEmpty(planYears) && !ObjectUtils.isEmpty(planYears.size())) {
  112. planQuarterList = quarterServiceImpl.changeTo(planYears);
  113. }
  114. } catch (Exception e) {
  115. e.printStackTrace();
  116. }
  117. Page pages = PageUtils.getPages(vo.getPageNum().intValue(), vo.getPageSize().intValue(), planQuarterList);
  118. return AjaxResult.success(pages);
  119. }
  120. @ApiOperation(value = "导出季度计划数据")
  121. @Log(title = ModularConstans.planQuarter, businessType = BusinessType.EXPORT)
  122. @PreAuthorize("@ss.hasPermi('plan:quarter:exportPlan')")
  123. @PostMapping("/exportPlan")
  124. public void exportPlan(HttpServletResponse response, @RequestBody PlanQuarterStandardVo quarterStandardVo, HttpServletRequest request) throws Exception {
  125. LoginUser loginUser = tokenService.getLoginUser(request);
  126. List<PlanQuarterResponseVo> list = quarterService.selectPlanQuarterListEXP(quarterStandardVo, loginUser);
  127. ExcelUtil<PlanQuarterResponseVo> util = new ExcelUtil<>(PlanQuarterResponseVo.class);
  128. util.exportExcel(response, list, "季度计划数据");
  129. }
  130. @ApiOperation(value = "导出季度计划数据(审核单位)")
  131. @PostMapping("/exportPlanExamine")
  132. @PreAuthorize("@ss.hasPermi('plan:quarter:exportPlanExamine')")
  133. @Log(title = ModularConstans.planQuarter, businessType = BusinessType.EXPORT)
  134. public void exportPlanExamine(HttpServletResponse response, @RequestBody PlanQuarterStandardVo quarterStandardVo, HttpServletRequest request) throws Exception {
  135. LoginUser loginUser = tokenService.getLoginUser(request);
  136. List<PlanQuarterResponseVo> list = quarterService.selectPlanQuarterExamineListEXP(quarterStandardVo, loginUser);
  137. ExcelUtil<PlanQuarterResponseVo> util = new ExcelUtil<>(PlanQuarterResponseVo.class);
  138. util.exportExcel(response, list, "季度计划数据(审核单位)");
  139. }
  140. @ApiOperation(value = "创建季度计划")
  141. @PostMapping("/add")
  142. @PreAuthorize("@ss.hasPermi('plan:quarter:add')")
  143. @Log(title = ModularConstans.planQuarter, businessType = BusinessType.INSERT)
  144. public AjaxResult add(@RequestBody PlanQuarterStandardVo quarterStandardVo, HttpServletRequest request) {
  145. //获取采购单位-
  146. LoginUser loginUser = tokenService.getLoginUser(request);
  147. quarterStandardVo.setPurchaseDeptId(String.valueOf(loginUser.getDeptId()));
  148. quarterStandardVo.setCreated(String.valueOf(loginUser.getUserId()));
  149. return quarterService.insertPlanQuarter(quarterStandardVo);
  150. }
  151. @ApiOperation(value = "修改季度计划")
  152. @PostMapping("/update")
  153. @PreAuthorize("@ss.hasPermi('plan:quarter:update')")
  154. @Log(title = ModularConstans.planQuarter, businessType = BusinessType.UPDATE)
  155. public AjaxResult update(@RequestBody PlanQuarterStandardVo quarterStandardVo, HttpServletRequest request) {
  156. LoginUser loginUser = tokenService.getLoginUser(request);
  157. quarterStandardVo.setUpdated(String.valueOf(loginUser.getUserId()));
  158. return quarterService.update(quarterStandardVo);
  159. }
  160. @ApiOperation(value = "提交季度计划")
  161. @PostMapping("/commit")
  162. //@PreAuthorize("@ss.hasPermi('plan:quarter:commit')")
  163. @Log(title = ModularConstans.planQuarter, businessType = BusinessType.UPDATE)
  164. public AjaxResult commit(@RequestBody PlanQuarterStandardVo quarterStandardVo) {
  165. return quarterService.commit(quarterStandardVo);
  166. }
  167. @ApiOperation(value = "删除季度计划")
  168. @PostMapping("/delete")
  169. @PreAuthorize("@ss.hasPermi('plan:quarter:delete')")
  170. @Log(title = ModularConstans.planQuarter, businessType = BusinessType.DELETE)
  171. public AjaxResult delete(@RequestBody PlanQuarterStandardVo quarterStandardVo) {
  172. return quarterService.deletePlanQuarterById(quarterStandardVo.getPlanPracticalId());
  173. }
  174. @ApiOperation(value = "根据id获取季度计划信息")
  175. @PostMapping("/view")
  176. //@PreAuthorize("@ss.hasPermi('plan:quarter:view')")
  177. @Log(title = ModularConstans.planQuarter, businessType = BusinessType.QUERY)
  178. public AjaxResult view(@RequestBody PlanQuarterStandardVo quarterStandardVo) {
  179. return quarterService.view(quarterStandardVo);
  180. }
  181. @ApiOperation(value = "审核季度计划通过")
  182. @PostMapping("/reviewTo")
  183. //@PreAuthorize("@ss.hasPermi('plan:quarter:reviewTo')")
  184. @Log(title = ModularConstans.planQuarter, businessType = BusinessType.UPDATE)
  185. public AjaxResult reviewTo(@RequestBody PlanQuarterStandardVo quarterStandardVo, HttpServletRequest request) {
  186. LoginUser loginUser = tokenService.getLoginUser(request);
  187. quarterStandardVo.setUpdated(String.valueOf(loginUser.getUserId()));
  188. return quarterService.reviewTo(quarterStandardVo);
  189. }
  190. @ApiOperation(value = "审核季度计划退回")
  191. @PostMapping("/reviewReturn")
  192. //@PreAuthorize("@ss.hasPermi('plan:quarter:reviewReturn')")
  193. @Log(title = ModularConstans.planQuarter, businessType = BusinessType.UPDATE)
  194. public AjaxResult reviewReturn(@RequestBody PlanQuarterStandardVo quarterStandardVo, HttpServletRequest request) {
  195. LoginUser loginUser = tokenService.getLoginUser(request);
  196. quarterStandardVo.setUpdated(String.valueOf(loginUser.getUserId()));
  197. return quarterService.reviewReturn(quarterStandardVo);
  198. }
  199. @ApiOperation(value = "申请修改季度计划")
  200. @PostMapping("/appUpdate")
  201. @PreAuthorize("@ss.hasPermi('plan:quarter:appUpdate')")
  202. @Log(title = ModularConstans.planQuarter, businessType = BusinessType.UPDATE)
  203. public AjaxResult appUpdate(@RequestBody PlanQuarterStandardVo quarterStandardVo) {
  204. return quarterService.appUpdate(quarterStandardVo);
  205. }
  206. @ApiOperation(value = "处理申请修改季度计划(或临时计划)")
  207. @PostMapping("/handleAppUpdate")
  208. @PreAuthorize("@ss.hasPermi('plan:quarter:handleAppUpdate')")
  209. @Log(title = ModularConstans.planQuarter, businessType = BusinessType.UPDATE)
  210. public AjaxResult handleAppUpdate(@RequestBody PlanQuarterStandardVo quarterStandardVo) {
  211. return quarterService.handleAppUpdate(quarterStandardVo);
  212. }
  213. @ApiOperation(value = "申请撤销季度计划")
  214. @PostMapping("/appDelete")
  215. @PreAuthorize("@ss.hasPermi('plan:quarter:appDelete')")
  216. @Log(title = ModularConstans.planYear, businessType = BusinessType.UPDATE)
  217. public AjaxResult appDelete(@RequestBody PlanQuarterStandardVo quarterStandardVo) {
  218. return quarterService.appDelete(quarterStandardVo);
  219. }
  220. @ApiOperation(value = "处理申请撤销季度计划")
  221. @PostMapping("/handleApp")
  222. @PreAuthorize("@ss.hasPermi('plan:quarter:handleApp')")
  223. @Log(title = ModularConstans.planYear, businessType = BusinessType.UPDATE)
  224. public AjaxResult handleApp(@RequestBody PlanQuarterStandardVo quarterStandardVo) {
  225. return quarterService.handleApp(quarterStandardVo);
  226. }
  227. @ApiOperation(value = "发函催告")
  228. @PostMapping("/sendLetter")
  229. //@PreAuthorize("@ss.hasPermi('plan:quarter:sendLetter')")
  230. @Log(title = ModularConstans.planQuarter, businessType = BusinessType.UPDATE)
  231. public AjaxResult sendLetter(@RequestBody PlanQuarterStandardVo quarterStandardVo) {
  232. return quarterService.sendLetter(quarterStandardVo);
  233. }
  234. @ApiOperation(value = "上传计划关联文件后保存文件信息")
  235. @PostMapping("/upLoadPlanFile")
  236. @PreAuthorize("@ss.hasPermi('plan:quarter:upLoadPlanFile')")
  237. @Log(title = ModularConstans.planQuarter, businessType = BusinessType.OTHER)
  238. public AjaxResult upLoadPlanFile(@RequestBody PlanQuarterStandardVo quarterStandardVo) {
  239. return quarterService.upLoadPlanFile(quarterStandardVo);
  240. }
  241. //季度计划不能自己创建
  242. //@ApiOperation(value = "导入季度计划数据")
  243. //@PostMapping("/importData")
  244. //@PreAuthorize("@ss.hasPermi('plan:quarter:importData')")
  245. //@Log(title = ModularConstans.planQuarter, businessType = BusinessType.INSERT)
  246. //public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
  247. // ExcelUtil<PlanQuarterStandardVo> util = new ExcelUtil<>(PlanQuarterStandardVo.class);
  248. // List<PlanQuarterStandardVo> quarter = util.importExcel(file.getInputStream());
  249. // //获取采购单位-
  250. // LoginUser loginUser = getLoginUser();
  251. // String message = quarterService.importPlanQuarter(quarter, updateSupport, loginUser);
  252. // return success(message);
  253. //}
  254. //季度计划不能进行导入
  255. //@ApiOperation("模板下载")
  256. //@GetMapping("/downloaExcel")
  257. //public void downloadZip(HttpServletResponse response) {
  258. // try {
  259. // InputStream resourceAsStream = this.getClass().getResourceAsStream("/template/planQuarter.xlsx");
  260. // response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
  261. // FileUtils.setAttachmentResponseHeader(response, "季度计划导入模板.xlsx");
  262. // FileUtils.writeBytesByInput(resourceAsStream, response.getOutputStream());
  263. // } catch (Exception e) {
  264. // log.error("下载文件失败", e);
  265. // }
  266. //}
  267. @ApiOperation(value = "导入年度计划数据")
  268. @PostMapping("/importPlanYearsData")
  269. @PreAuthorize("@ss.hasPermi('plan:quarter:importPlanYearsData')")
  270. @Log(title = ModularConstans.planQuarter, businessType = BusinessType.INSERT)
  271. public AjaxResult importPlanYearsData(@RequestBody List<Long> planYearIds) throws Exception {
  272. if (ObjectUtils.isEmpty(planYearIds)) {
  273. return error("请选择要创建的计划!");
  274. }
  275. return quarterService.importPlanYearsData(planYearIds);
  276. }
  277. }