AdminNewOrderApiController.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460
  1. package com.goafanti.order.controller;
  2. import java.io.IOException;
  3. import java.io.OutputStream;
  4. import java.text.ParseException;
  5. import java.text.SimpleDateFormat;
  6. import java.util.Date;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import org.apache.commons.lang3.StringUtils;
  10. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.web.bind.annotation.RequestMapping;
  13. import org.springframework.web.bind.annotation.RequestMethod;
  14. import org.springframework.web.bind.annotation.RestController;
  15. import com.goafanti.common.bo.Result;
  16. import com.goafanti.common.constant.ErrorConstants;
  17. import com.goafanti.common.controller.CertifyApiController;
  18. import com.goafanti.common.model.TOrderNew;
  19. import com.goafanti.common.model.TOrderRefundWithBLOBs;
  20. import com.goafanti.common.model.TOrderTask;
  21. import com.goafanti.order.enums.ApprovalNewState;
  22. import com.goafanti.order.enums.OrderNewState;
  23. import com.goafanti.order.service.OrderNewService;
  24. @RestController
  25. @RequestMapping(value = "/api/admin/newOrder")
  26. public class AdminNewOrderApiController extends CertifyApiController {
  27. @Autowired
  28. private OrderNewService orderNewService;
  29. /**
  30. * 创建订单
  31. * @param uid
  32. * @param orderType
  33. * @return
  34. */
  35. @RequestMapping(value = "/createOrder",method = RequestMethod.POST)
  36. public Result createOrder(String uid,Integer orderType){
  37. Result res = new Result();
  38. if(StringUtils.isBlank(uid)){
  39. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"","客户编号"));
  40. return res;
  41. }
  42. if(orderType == null){
  43. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"","订单类型"));
  44. return res;
  45. }
  46. res.data(orderNewService.createServiceOrder(uid,orderType));
  47. return res;
  48. }
  49. /**
  50. * 添加项目
  51. * @param t
  52. * @return
  53. */
  54. @RequestMapping(value = "/addOrderTask",method = RequestMethod.POST)
  55. public Result addOrderTask(TOrderTask t){
  56. Result res = new Result();
  57. if(StringUtils.isBlank(t.getOrderNo())){
  58. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"","订单编号"));
  59. return res;
  60. }
  61. if (t.getOrderNo()!=null&&orderNewService.checkOrderMain(t)) {
  62. res.getError().add(buildError("订单主要任务已存在","订单主要任务已存在"));
  63. return res;
  64. }
  65. return res.data(orderNewService.addOrderTask(t));
  66. }
  67. /**
  68. * 修改项目
  69. * @param t
  70. * @return
  71. */
  72. @RequestMapping(value = "/updateOrderTask",method = RequestMethod.POST)
  73. public Result updateOrderTask(TOrderTask t){
  74. Result res=new Result();
  75. if(null==t.getId()){
  76. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"","项目编号"));
  77. return res;
  78. }
  79. if (t.getOrderNo()!=null&&orderNewService.checkOrderMain(t)) {
  80. res.getError().add(buildError("订单主要任务已存在","订单主要任务已存在"));
  81. return res;
  82. }
  83. return res.data(orderNewService.updateOrderTask(t));
  84. }
  85. /**
  86. * 删除订单项目
  87. * @param detailId
  88. * @return
  89. */
  90. @RequestMapping(value = "/deleteOrderTask",method = RequestMethod.POST)
  91. public Result deleteOrderTask(Integer id){
  92. Result res = new Result();
  93. if(id==null){
  94. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"","项目编号"));
  95. return res;
  96. }
  97. return res.data(orderNewService.delectOrderTask(id));
  98. }
  99. /**
  100. * 删除订单
  101. * @param detailId
  102. * @return
  103. */
  104. @RequestMapping(value = "/deleteOrderNew",method = RequestMethod.POST)
  105. public Result deleteOrderNew(String orderNo){
  106. Result res = new Result();
  107. if(StringUtils.isBlank(orderNo)){
  108. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"","订单编号"));
  109. return res;
  110. }
  111. int i=orderNewService.deleteOrderNew(orderNo);
  112. if (i==-1) {
  113. res.getError().add(buildError("订单未达删除条件","订单未达删除条件"));
  114. return res;
  115. }
  116. return res.data(i);
  117. }
  118. /**
  119. * 获取订单项目信息
  120. * @param orderNo
  121. * @return
  122. */
  123. @RequestMapping(value = "/getOrderTask",method = RequestMethod.GET)
  124. public Result getOrderTask(String orderNo){
  125. Result res = new Result();
  126. if(StringUtils.isBlank(orderNo)){
  127. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"","订单编号"));
  128. return res;
  129. }
  130. res.setData(orderNewService.selectOrderTask(orderNo));
  131. return res;
  132. }
  133. /**
  134. * 修改订单
  135. * @param orderNo
  136. * @param firstPayment
  137. * @param orderAmount
  138. * @param signFirstPayment
  139. * @param signTotalAmount
  140. * @param approval
  141. * @param orderRemarks
  142. * @return
  143. */
  144. @RequestMapping(value = "/updateServiceOrderNew",method = RequestMethod.POST)
  145. public Result updateServiceOrder(TOrderNew t,Integer isSubmit,String signDate){
  146. Result res = new Result();
  147. if(StringUtils.isBlank(t.getOrderNo())){
  148. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "订单编号"));
  149. return res;
  150. }
  151. if(null==t.getTotalAmount() || null==t.getFirstAmount()){
  152. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "订单金额 和 首付金额"));
  153. return res;
  154. }
  155. if(StringUtils.isBlank(t.getContractPictureUrl())){
  156. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "合同图片"));
  157. return res;
  158. }
  159. if(null==isSubmit){
  160. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "提条状态"));
  161. return res;
  162. }
  163. if (isSubmit==1&&orderNewService.checkORderTask(t.getOrderNo())) {
  164. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "主项目"));
  165. return res;
  166. }
  167. if (StringUtils.isNotBlank(signDate)) {
  168. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  169. try {
  170. t.setSignTime(sdf.parse(signDate));
  171. } catch (ParseException e) {
  172. e.printStackTrace();
  173. }
  174. }
  175. res.setData(orderNewService.updateServiceOrder(t,isSubmit));
  176. return res;
  177. }
  178. /**
  179. * 订单详情
  180. * @param orderNo
  181. * @return
  182. */
  183. @RequestMapping(value = "/getOrderNewDetail", method = RequestMethod.GET)
  184. public Result getOrderNewDetail(String orderNo){
  185. Result res = new Result();
  186. if(StringUtils.isBlank(orderNo)){
  187. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "订单编号","订单编号"));
  188. return res;
  189. }
  190. res.setData(orderNewService.getOrderNewDetail(orderNo));
  191. return res;
  192. }
  193. /**
  194. * 收款截点编辑
  195. */
  196. @RequestMapping(value = "/createOrderDun", method = RequestMethod.POST)
  197. public Result createOrderDun(String orderDun,String orderNo){
  198. Result res = new Result();
  199. if(StringUtils.isBlank(orderNo)){
  200. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "订单编号","订单编号"));
  201. return res;
  202. }
  203. res.setData(orderNewService.createOrderDun(orderDun,orderNo));
  204. return res;
  205. }
  206. /**
  207. * 查看订单收款截点
  208. */
  209. @RequestMapping(value = "/selectOrderDun", method = RequestMethod.GET)
  210. public Result selectOrderDun(String orderNo){
  211. Result res = new Result();
  212. if(StringUtils.isBlank(orderNo)){
  213. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "订单编号","订单编号"));
  214. return res;
  215. }
  216. res.setData(orderNewService.selectOrderDun(orderNo));
  217. return res;
  218. }
  219. /**
  220. * 订单列表
  221. */
  222. @RequestMapping(value="/orderNewList", method = RequestMethod.GET)
  223. public Result orderNewList(String name,String orderNo,String starTime,String endTime ,Integer specially ,Integer distribution,Integer pageNo,Integer pageSize){
  224. Result res=new Result();
  225. res.data(orderNewService.orderNewList(name, orderNo, starTime, endTime, specially , distribution, pageNo, pageSize));
  226. return res;
  227. }
  228. /**
  229. * 订单审核
  230. */
  231. @RequestMapping(value="/auditOrderNew", method = RequestMethod.POST)
  232. public Result auditOrderNewList(String orderNo,Integer orderStatus,String reason){
  233. Result res=new Result();
  234. if(StringUtils.isBlank(orderNo)){
  235. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "订单编号","订单编号"));
  236. return res;
  237. }
  238. if(orderStatus==null||(orderStatus!=OrderNewState.QDSHTG.getCode()&&orderStatus!=OrderNewState.QDSHJJ.getCode())||
  239. orderNewService.chekeOrderStatus(orderNo)){
  240. res.getError().add(buildError( "审核状态错误","审核状态错误"));
  241. return res;
  242. }
  243. if (orderStatus==OrderNewState.QDSHJJ.getCode()&&StringUtils.isBlank(reason)) {
  244. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"驳回原因", "驳回原因"));
  245. return res;
  246. }
  247. return res.data(orderNewService.updateOrderNew(orderNo,orderStatus,reason));
  248. }
  249. /**
  250. * 催款统计列表
  251. */
  252. @RequestMapping(value="/dunOrderNewList", method = RequestMethod.GET)
  253. public Result dunOrderNewList(String name,String orderNo,String starTime,String endTime,Integer specially,Integer pageNo,Integer pageSize){
  254. Result res=new Result();
  255. res.data(orderNewService.dunOrderNewList(name, orderNo, starTime, endTime,specially, pageNo, pageSize));
  256. return res;
  257. }
  258. /**
  259. * 新增催款记录
  260. */
  261. @RequestMapping(value="/createDunLog", method = RequestMethod.POST)
  262. public Result createDunLog(String dunId,String dumTime,String remarks){
  263. Result res=new Result();
  264. if (StringUtils.isBlank(dunId)) {
  265. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "催款ID","催款ID"));
  266. return res;
  267. }
  268. if (StringUtils.isBlank(dumTime)||StringUtils.isBlank(remarks)) {
  269. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "时间与描述","时间与描述"));
  270. return res;
  271. }
  272. res.data(orderNewService.createDunLog(dunId, dumTime, remarks));
  273. return res;
  274. }
  275. /**
  276. * 催款记录查询
  277. */
  278. @RequestMapping(value="/selectDunLogList", method = RequestMethod.GET)
  279. public Result selectDunLogList(String dunId){
  280. Result res=new Result();
  281. if (StringUtils.isBlank(dunId)) {
  282. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "催款ID","催款ID"));
  283. return res;
  284. }
  285. res.data(orderNewService.selectDunLogList(dunId));
  286. return res;
  287. }
  288. /**
  289. * 订单退单
  290. */
  291. @RequestMapping(value="/addOrderRefund", method = RequestMethod.POST)
  292. public Result addOrderRefund(TOrderRefundWithBLOBs t){
  293. Result res=new Result();
  294. if (StringUtils.isBlank(t.getOrderNo())) {
  295. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "订单编号","订单编号"));
  296. return res;
  297. }
  298. if(StringUtils.isBlank(t.getContractUrl())||StringUtils.isBlank(t.getApplicationUrl())){
  299. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "合同与申请表","合同与申请表"));
  300. return res;
  301. }
  302. if (StringUtils.isBlank(t.getReason())) {
  303. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "退单原因","退单原因"));
  304. return res;
  305. }
  306. if(orderNewService.checkOderSettlementAmount(t.getOrderNo())){
  307. res.getError().add(buildError( "未达退单条件","未达退单条件"));
  308. return res;
  309. }
  310. res.data(orderNewService.addOrderRefund(t));
  311. return res;
  312. }
  313. /**
  314. * 退单详情
  315. */
  316. @RequestMapping(value="/orderRefundDetail", method = RequestMethod.GET)
  317. public Result OrderRefund(String id){
  318. Result res=new Result();
  319. if (StringUtils.isBlank(id)) {
  320. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "退单编号","退单编号"));
  321. return res;
  322. }
  323. res.data(orderNewService.orderRefundDetail(id));
  324. return res;
  325. }
  326. /**
  327. * 订单退单
  328. */
  329. @RequestMapping(value="/updateOrderRefund", method = RequestMethod.POST)
  330. public Result updateOrderRefund(TOrderRefundWithBLOBs t){
  331. Result res=new Result();
  332. if (null==t.getId()) {
  333. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "退单编号","退单编号"));
  334. return res;
  335. }
  336. if(StringUtils.isBlank(t.getContractUrl())||StringUtils.isBlank(t.getApplicationUrl())){
  337. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "合同与申请表","合同与申请表"));
  338. return res;
  339. }
  340. if (StringUtils.isBlank(t.getReason())) {
  341. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "退单原因","退单原因"));
  342. return res;
  343. }
  344. res.data(orderNewService.updateOrderRefund(t));
  345. return res;
  346. }
  347. /**
  348. * 审批特批订单
  349. * @param orderNo
  350. * @return
  351. */
  352. @RequestMapping(value = "/approvalOrder",method = RequestMethod.POST)
  353. public Result approvalOrder(String orderNo,Integer confirm,String reason){
  354. Result res = new Result();
  355. if (StringUtils.isBlank(orderNo)||confirm==null) {
  356. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "订单编号和审批","订单编号和审批"));
  357. return res;
  358. }
  359. if (confirm==ApprovalNewState.BH.getCode()&&StringUtils.isBlank(reason)) {
  360. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"驳回原因", "驳回原因"));
  361. return res;
  362. }
  363. if (orderNewService.chekeApprovalOrderStatus(orderNo)) {
  364. res.getError().add(buildError( "审核状态错误","审核状态错误"));
  365. return res;
  366. }
  367. return res.data(orderNewService.updateApprovalOrder(orderNo,confirm,reason));
  368. }
  369. /**
  370. * 退单列表
  371. */
  372. @RequestMapping(value="/orderRefundList", method = RequestMethod.GET)
  373. public Result orderRefundList(String name,String orderNo,String starTime,String endTime,Integer specially,Integer pageNo,Integer pageSize){
  374. Result res=new Result();
  375. res.data(orderNewService.orderRefundList(name, orderNo, starTime, endTime,specially, pageNo, pageSize));
  376. return res;
  377. }
  378. /**
  379. * 订单结单
  380. */
  381. @RequestMapping(value="/OrderOver", method = RequestMethod.GET)
  382. public Result updateOrderOver(String orderNo){
  383. Result res=new Result();
  384. if (StringUtils.isBlank(orderNo)) {
  385. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "订单编号","订单编号"));
  386. return res;
  387. }
  388. int i=orderNewService.updateOrderOver(orderNo);
  389. if (i==-1) {
  390. res.getError().add(buildError("不符合结单条件","不符合结单条件"));
  391. return res;
  392. }
  393. res.setData(i);
  394. return res;
  395. }
  396. /**
  397. * 咨询师驳回
  398. */
  399. @RequestMapping(value = "/technicianBackOrder", method = RequestMethod.POST)
  400. public Result technicianBackOrder(String orderNo,String reason){
  401. Result res = new Result();
  402. int i=orderNewService.updatetechnicianBackOrder(orderNo, reason);
  403. if (i==-1) {
  404. res.getError().add(buildError("不符合驳回条件","不符合驳回条件"));
  405. return res;
  406. }
  407. return res;
  408. }
  409. /** 退单文件上传 **/
  410. @RequestMapping(value = "/uploadRefundOrderFile", method = RequestMethod.POST)
  411. public Result uploadRefundOrderFile(HttpServletRequest req,String sign){
  412. Result res = new Result();
  413. //order_refund_file
  414. res.setData(handleFile(res, "/order_refund_file/", false, req, sign));
  415. return res;
  416. }
  417. /**
  418. * 催款列表下载
  419. * @throws IOException
  420. */
  421. @RequestMapping(value = "/exportOrderDunData", method = RequestMethod.GET)
  422. public Result exportOrderDunData(String name,String orderNo,String starTime,String endTime,HttpServletResponse response) throws IOException{
  423. Result res = new Result();
  424. XSSFWorkbook wb = orderNewService.exportOrderDunData( name, orderNo, starTime, endTime);
  425. if(null == wb){
  426. res.getError().add(buildError("", "没有找到数据"));
  427. return res;
  428. }
  429. String fileName = "催款信息表 " + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + ".xls";
  430. OutputStream out = response.getOutputStream();
  431. response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes(),"iso-8859-1"));
  432. response.setContentType("application/octet-stream;charset=utf-8");
  433. try {
  434. // 返回数据流
  435. wb.write(out);
  436. out.flush();
  437. out.close();
  438. } finally {
  439. out.flush();
  440. out.close();
  441. }
  442. return res;
  443. }
  444. }