AdminNewOrderApiController.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496
  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,String 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. int i=Integer.valueOf(isSubmit);
  164. if (i==1) {
  165. if (orderNewService.checkORderTask(t.getOrderNo())) {
  166. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "主项目"));
  167. return res;
  168. }
  169. if (orderNewService.checkORderDun(t.getOrderNo())) {
  170. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "催款信息"));
  171. return res;
  172. }
  173. }
  174. if (StringUtils.isNotBlank(signDate)) {
  175. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  176. try {
  177. t.setSignTime(sdf.parse(signDate));
  178. } catch (ParseException e) {
  179. e.printStackTrace();
  180. }
  181. }
  182. res.setData(orderNewService.updateServiceOrder(t,i));
  183. return res;
  184. }
  185. /**
  186. * 订单详情
  187. * @param orderNo
  188. * @return
  189. */
  190. @RequestMapping(value = "/getOrderNewDetail", method = RequestMethod.GET)
  191. public Result getOrderNewDetail(String orderNo){
  192. Result res = new Result();
  193. if(StringUtils.isBlank(orderNo)){
  194. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "订单编号","订单编号"));
  195. return res;
  196. }
  197. res.setData(orderNewService.getOrderNewDetail(orderNo));
  198. return res;
  199. }
  200. /**
  201. * 收款截点编辑
  202. */
  203. @RequestMapping(value = "/createOrderDun", method = RequestMethod.POST)
  204. public Result createOrderDun(String orderDun,String orderNo){
  205. Result res = new Result();
  206. if(StringUtils.isBlank(orderNo)){
  207. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "订单编号","订单编号"));
  208. return res;
  209. }
  210. res.setData(orderNewService.createOrderDun(orderDun,orderNo));
  211. return res;
  212. }
  213. /**
  214. * 查看订单收款截点
  215. */
  216. @RequestMapping(value = "/selectOrderDun", method = RequestMethod.GET)
  217. public Result selectOrderDun(String orderNo){
  218. Result res = new Result();
  219. if(StringUtils.isBlank(orderNo)){
  220. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "订单编号","订单编号"));
  221. return res;
  222. }
  223. res.setData(orderNewService.selectOrderDun(orderNo));
  224. return res;
  225. }
  226. /**
  227. * 订单列表
  228. */
  229. @RequestMapping(value="/orderNewList", method = RequestMethod.GET)
  230. public Result orderNewList(String name,String orderNo,String starTime,String endTime ,Integer specially ,Integer distribution,String depId,Integer pageNo,Integer pageSize){
  231. Result res=new Result();
  232. res.data(orderNewService.orderNewList(name, orderNo, starTime, endTime, specially , distribution,depId, pageNo, pageSize));
  233. return res;
  234. }
  235. /**
  236. * 订单审核
  237. */
  238. @RequestMapping(value="/auditOrderNew", method = RequestMethod.POST)
  239. public Result auditOrderNew(String orderNo,Integer orderStatus,String reason,Integer outsource){
  240. Result res=new Result();
  241. if(StringUtils.isBlank(orderNo)){
  242. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "订单编号","订单编号"));
  243. return res;
  244. }
  245. if(orderStatus==null||(orderStatus!=OrderNewState.QDSHTG.getCode()&&orderStatus!=OrderNewState.QDSHJJ.getCode())||
  246. orderNewService.chekeOrderStatus(orderNo)){
  247. res.getError().add(buildError( "审核状态错误","审核状态错误"));
  248. return res;
  249. }
  250. if (orderStatus==OrderNewState.QDSHJJ.getCode()&&StringUtils.isBlank(reason)) {
  251. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"驳回原因", "驳回原因"));
  252. return res;
  253. }
  254. return res.data(orderNewService.updateOrderNew(orderNo,orderStatus,reason,outsource));
  255. }
  256. /**
  257. * 催款统计列表
  258. */
  259. @RequestMapping(value="/dunOrderNewList", method = RequestMethod.GET)
  260. public Result dunOrderNewList(String name,String orderNo,String starTime,String endTime,Integer specially,String adminName,String depId,Integer pageNo,Integer pageSize){
  261. Result res=new Result();
  262. res.data(orderNewService.dunOrderNewList(name, orderNo, starTime, endTime,specially, adminName, depId,pageNo, pageSize));
  263. return res;
  264. }
  265. /**
  266. * 新增催款记录
  267. */
  268. @RequestMapping(value="/createDunLog", method = RequestMethod.POST)
  269. public Result createDunLog(String dunId,String dumTime,String remarks){
  270. Result res=new Result();
  271. if (StringUtils.isBlank(dunId)) {
  272. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "催款ID","催款ID"));
  273. return res;
  274. }
  275. if (StringUtils.isBlank(dumTime)||StringUtils.isBlank(remarks)) {
  276. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "时间与描述","时间与描述"));
  277. return res;
  278. }
  279. res.data(orderNewService.createDunLog(dunId, dumTime, remarks));
  280. return res;
  281. }
  282. /**
  283. * 催款记录查询
  284. */
  285. @RequestMapping(value="/selectDunLogList", method = RequestMethod.GET)
  286. public Result selectDunLogList(String dunId){
  287. Result res=new Result();
  288. if (StringUtils.isBlank(dunId)) {
  289. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "催款ID","催款ID"));
  290. return res;
  291. }
  292. res.data(orderNewService.selectDunLogList(dunId));
  293. return res;
  294. }
  295. /**
  296. * 订单退单
  297. */
  298. @RequestMapping(value="/addOrderRefund", method = RequestMethod.POST)
  299. public Result addOrderRefund(TOrderRefundWithBLOBs t){
  300. Result res=new Result();
  301. if (StringUtils.isBlank(t.getOrderNo())) {
  302. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "订单编号","订单编号"));
  303. return res;
  304. }
  305. if(StringUtils.isBlank(t.getContractUrl())||StringUtils.isBlank(t.getApplicationUrl())){
  306. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "合同与申请表","合同与申请表"));
  307. return res;
  308. }
  309. if (StringUtils.isBlank(t.getReason())) {
  310. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "退单原因","退单原因"));
  311. return res;
  312. }
  313. if(orderNewService.checkOderSettlementAmount(t.getOrderNo())){
  314. res.getError().add(buildError( "未达退单条件","未达退单条件"));
  315. return res;
  316. }
  317. res.data(orderNewService.addOrderRefund(t));
  318. return res;
  319. }
  320. /**
  321. * 退单详情
  322. */
  323. @RequestMapping(value="/orderRefundDetail", method = RequestMethod.GET)
  324. public Result OrderRefund(String id){
  325. Result res=new Result();
  326. if (StringUtils.isBlank(id)) {
  327. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "退单编号","退单编号"));
  328. return res;
  329. }
  330. res.data(orderNewService.orderRefundDetail(id));
  331. return res;
  332. }
  333. /**
  334. * 订单退单
  335. */
  336. @RequestMapping(value="/updateOrderRefund", method = RequestMethod.POST)
  337. public Result updateOrderRefund(TOrderRefundWithBLOBs t){
  338. Result res=new Result();
  339. if (null==t.getId()) {
  340. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "退单编号","退单编号"));
  341. return res;
  342. }
  343. if(StringUtils.isBlank(t.getContractUrl())||StringUtils.isBlank(t.getApplicationUrl())){
  344. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "合同与申请表","合同与申请表"));
  345. return res;
  346. }
  347. if (StringUtils.isBlank(t.getReason())) {
  348. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "退单原因","退单原因"));
  349. return res;
  350. }
  351. res.data(orderNewService.updateOrderRefund(t));
  352. return res;
  353. }
  354. /**
  355. * 审批特批订单
  356. * @param orderNo
  357. * @return
  358. */
  359. @RequestMapping(value = "/approvalOrder",method = RequestMethod.POST)
  360. public Result approvalOrder(String orderNo,Integer confirm,String reason){
  361. Result res = new Result();
  362. if (StringUtils.isBlank(orderNo)||confirm==null) {
  363. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "订单编号和审批","订单编号和审批"));
  364. return res;
  365. }
  366. if (confirm==ApprovalNewState.BH.getCode()&&StringUtils.isBlank(reason)) {
  367. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"驳回原因", "驳回原因"));
  368. return res;
  369. }
  370. if (orderNewService.chekeApprovalOrderStatus(orderNo)) {
  371. res.getError().add(buildError( "审核状态错误","审核状态错误"));
  372. return res;
  373. }
  374. return res.data(orderNewService.updateApprovalOrder(orderNo,confirm,reason));
  375. }
  376. /**
  377. * 退单列表
  378. */
  379. @RequestMapping(value="/orderRefundList", method = RequestMethod.GET)
  380. public Result orderRefundList(String name,String orderNo,String starTime,String endTime,Integer specially,Integer pageNo,Integer pageSize){
  381. Result res=new Result();
  382. res.data(orderNewService.orderRefundList(name, orderNo, starTime, endTime,specially, pageNo, pageSize));
  383. return res;
  384. }
  385. /**
  386. * 订单结单
  387. */
  388. @RequestMapping(value="/OrderOver", method = RequestMethod.GET)
  389. public Result updateOrderOver(String orderNo){
  390. Result res=new Result();
  391. if (StringUtils.isBlank(orderNo)) {
  392. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "订单编号","订单编号"));
  393. return res;
  394. }
  395. int i=orderNewService.updateOrderOver(orderNo);
  396. if (i==-1) {
  397. res.getError().add(buildError("不符合结单条件","不符合结单条件"));
  398. return res;
  399. }
  400. res.setData(i);
  401. return res;
  402. }
  403. /**
  404. * 咨询师驳回
  405. */
  406. @RequestMapping(value = "/technicianBackOrder", method = RequestMethod.POST)
  407. public Result technicianBackOrder(String orderNo,String reason){
  408. Result res = new Result();
  409. int i=orderNewService.updatetechnicianBackOrder(orderNo, reason);
  410. if (i==-1) {
  411. res.getError().add(buildError("不符合驳回条件","不符合驳回条件"));
  412. return res;
  413. }
  414. return res;
  415. }
  416. /**
  417. * 财务订单转交
  418. */
  419. @RequestMapping(value = "/updateFinance", method= RequestMethod.GET)
  420. public Result updateFinance(String orderNo,String newFinance) {
  421. Result res = new Result();
  422. orderNewService.updateFinance( orderNo, newFinance);
  423. return res;
  424. }
  425. /**
  426. * 查看订单日志
  427. */
  428. @RequestMapping(value ="/selectOrderLog", method=RequestMethod.GET)
  429. public Result selectOrderLog (String orderNo) {
  430. Result res=new Result();
  431. if (StringUtils.isBlank(orderNo)) {
  432. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "订单编号","订单编号"));
  433. return res;
  434. }
  435. res.data(orderNewService.selectOrderLog(orderNo));
  436. return res;
  437. }
  438. /** 退单文件上传 **/
  439. @RequestMapping(value = "/uploadRefundOrderFile", method = RequestMethod.POST)
  440. public Result uploadRefundOrderFile(HttpServletRequest req,String sign){
  441. Result res = new Result();
  442. //order_refund_file
  443. res.setData(handleFile(res, "/order_refund_file/", false, req, sign));
  444. return res;
  445. }
  446. /**
  447. * 催款列表下载
  448. * @throws IOException
  449. */
  450. @RequestMapping(value = "/exportOrderDunData", method = RequestMethod.GET)
  451. public Result exportOrderDunData(String name,String orderNo,String adminName,String depId,String starTime,String endTime,HttpServletResponse response) throws IOException{
  452. Result res = new Result();
  453. XSSFWorkbook wb = orderNewService.exportOrderDunData( name, orderNo, adminName, depId, starTime, endTime);
  454. if(null == wb){
  455. res.getError().add(buildError("", "没有找到数据"));
  456. return res;
  457. }
  458. String fileName = "催款信息表 " + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + ".xls";
  459. OutputStream out = response.getOutputStream();
  460. response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes(),"iso-8859-1"));
  461. response.setContentType("application/octet-stream;charset=utf-8");
  462. try {
  463. // 返回数据流
  464. wb.write(out);
  465. out.flush();
  466. out.close();
  467. } finally {
  468. out.flush();
  469. out.close();
  470. }
  471. return res;
  472. }
  473. }