AdminSignclosedController.java 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535
  1. package com.iamberry.rst.controllers.cm;
  2. import com.iamberry.rst.core.cm.*;
  3. import com.iamberry.rst.core.order.Product;
  4. import com.iamberry.rst.core.page.PageRequest;
  5. import com.iamberry.rst.core.page.PagedResult;
  6. import com.iamberry.rst.core.pts.PtsMachine;
  7. import com.iamberry.rst.faces.cm.AwaitingSignclosedProductInfoService;
  8. import com.iamberry.rst.faces.cm.ComplaintDetectInfoService;
  9. import com.iamberry.rst.faces.cm.ComplaintSignclosedInfoService;
  10. import com.iamberry.rst.faces.cm.FittingsInfoService;
  11. import com.iamberry.rst.faces.product.ProductService;
  12. import com.iamberry.rst.faces.pts.MachineService;
  13. import com.iamberry.rst.service.cm.mapper.AwaitingSignclosedProductMapper;
  14. import com.iamberry.rst.service.cm.mapper.ComplaintSignclosedInfoMapper;
  15. import com.iamberry.rst.service.cm.mapper.ComplaintSignclosedProductInfoMapper;
  16. import com.iamberry.rst.utils.StitchAttrUtil;
  17. import com.iamberry.wechat.tools.ResponseJson;
  18. import net.sf.json.JSONArray;
  19. import net.sf.json.JSONObject;
  20. import org.apache.commons.lang.StringUtils;
  21. import org.apache.shiro.authz.annotation.RequiresPermissions;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Controller;
  24. import org.springframework.web.bind.annotation.RequestMapping;
  25. import org.springframework.web.bind.annotation.RequestParam;
  26. import org.springframework.web.bind.annotation.ResponseBody;
  27. import org.springframework.web.servlet.ModelAndView;
  28. import javax.servlet.http.HttpServletRequest;
  29. import java.text.SimpleDateFormat;
  30. import java.util.*;
  31. /**
  32. * Created by wxm on 2017/8/29.
  33. */
  34. @Controller
  35. @RequestMapping("/admin/signclosed")
  36. public class AdminSignclosedController {
  37. // private
  38. @Autowired
  39. private ComplaintDetectInfoService complaintDetectInfoService;
  40. @Autowired
  41. private ProductService productService;
  42. @Autowired
  43. private FittingsInfoService fittingsInfoService;
  44. @Autowired
  45. private ComplaintSignclosedInfoService complaintSignclosedInfoService;
  46. @Autowired
  47. private AwaitingSignclosedProductInfoService awaitingSignclosedProductInfoService;
  48. @Autowired
  49. private MachineService machineService;
  50. @Autowired
  51. private ComplaintSignclosedProductInfoMapper cmplaintSignclosedProductInfoMapper;
  52. /**
  53. * 跳转到添加签收记录页面
  54. *
  55. * @return
  56. */
  57. @RequiresPermissions("signclosed:add:signclosed")
  58. @RequestMapping(value = "/to_add_signclosed")
  59. public ModelAndView toAddDetect(HttpServletRequest request) {
  60. ModelAndView mv = new ModelAndView("cm/signclosed/add_signclosed");
  61. //获取所有产品及其颜色,配件
  62. Product product = new Product();
  63. List<Product> productList = productService.listProductAndColorAndfittings(product);
  64. mv.addObject("productList",productList);
  65. return mv;
  66. }
  67. /**
  68. * 客诉 - 查询签收/仓储列表
  69. * @param request
  70. * @return
  71. */
  72. @RequiresPermissions("signclosed:select:signclosed")
  73. @RequestMapping("/select_signclosed_list")
  74. public ModelAndView selectDetectList(HttpServletRequest request,
  75. @RequestParam(value = "pageNO", defaultValue = "1", required = false) int pageNO,
  76. @RequestParam(value = "pageTotal", required = false) Integer pageTotal,
  77. @RequestParam(value = "pageSize", defaultValue = "5", required = false) int pageSize,
  78. ComplaintSignclosedInfo signclosedInfo) {
  79. ModelAndView mv = new ModelAndView("cm/signclosed/signclosed_list");
  80. if(signclosedInfo.getIsBinding() != null && signclosedInfo.getIsBinding() == 1){
  81. mv = new ModelAndView("cm/signclosed/customer_signclosed_list");
  82. }
  83. StringBuilder url = new StringBuilder("/admin/signclosed/select_signclosed_list?pageSize=" + pageSize);
  84. // 封装请求数据
  85. PageRequest<ComplaintSignclosedInfo> pageRequest = new PageRequest<>(signclosedInfo, pageNO, pageSize, pageTotal == null);
  86. // 查询订单列表
  87. PagedResult<ComplaintSignclosedInfo> result = complaintSignclosedInfoService.listSignclosed(pageRequest);
  88. long total = 0;
  89. if (pageTotal == null) {
  90. total = result.getPages();
  91. } else {
  92. total = pageTotal;
  93. result.setPages(total);
  94. }
  95. /* url.append("&pageTotal=").append(total).append("&pageNO=");
  96. mv.addObject("page", result);
  97. mv.addObject("url", url.toString());*/
  98. StitchAttrUtil.getSa().setModelAndView(signclosedInfo, mv, "/admin/signclosed/select_signclosed_list", result);
  99. return mv;
  100. }
  101. /**
  102. * 获取机器信息
  103. * @param
  104. * @return
  105. * @throws Exception
  106. */
  107. @ResponseBody
  108. @RequiresPermissions("signclosed:add:signclosed")
  109. @RequestMapping("/get_machine_id")
  110. public ResponseJson getMachineId(@RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
  111. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  112. @RequestParam(value = "pageTotal", required = false) Integer pageTotal,
  113. PtsMachine ptsMachine) throws Exception {
  114. ResponseJson rj = new ResponseJson();
  115. List<PtsMachine> ptsMachineList = machineService.ListPtsMachineToSignclosed(ptsMachine);
  116. List results = new ArrayList();
  117. for (PtsMachine machine : ptsMachineList){
  118. Map<String,Object> m = new HashMap<String,Object>();
  119. m.put("id",machine.getMachineId());
  120. m.put("text",machine.getMachineBarcode());
  121. results.add(m);
  122. }
  123. // Map<String,Object> paginationMap = new HashMap<String,Object>();
  124. // paginationMap.put("more",true);
  125. //
  126. // Map<String,Object> map = new HashMap<String,Object>();
  127. // map.put("results",results);
  128. // map.put("pagination",paginationMap);
  129. //
  130. // rj.addResponseKeyValue("map",map);
  131. rj.addResponseKeyValue("results",results);
  132. return rj;
  133. }
  134. /**
  135. * 添加签收信息
  136. * @param request
  137. * @return
  138. * @throws Exception
  139. */
  140. @RequiresPermissions("signclosed:add:signclosed")
  141. @ResponseBody
  142. @RequestMapping("/add_signclosed")
  143. public ResponseJson addSignclosed(HttpServletRequest request,ComplaintSignclosedInfo signclosedInfo,String orderItemString) throws Exception {
  144. ResponseJson msg = new ResponseJson();
  145. if(signclosedInfo == null){
  146. msg.setResultCode(200);
  147. msg.setReturnCode(500);
  148. return msg;
  149. }
  150. if(orderItemString == null){
  151. msg.setResultCode(200);
  152. msg.setReturnCode(502);
  153. return msg;
  154. }
  155. JSONArray jsonArray = JSONArray.fromObject(orderItemString);
  156. JSONObject jsonArray2 = jsonArray.getJSONObject(0);
  157. if(jsonArray2.get("itemNum").equals("")){
  158. msg.setResultCode(200);
  159. msg.setReturnCode(503);
  160. return msg;
  161. }
  162. String signclosedDate = request.getParameter("signclosed_date");
  163. if(signclosedDate != null){
  164. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  165. signclosedInfo.setSignclosedDate(format.parse(signclosedDate));
  166. }
  167. signclosedInfo.setSignclosedCreateTime(new Date());
  168. signclosedInfo.setSignclosedState(1);
  169. boolean num = complaintSignclosedInfoService.insert(signclosedInfo,orderItemString);
  170. if (!num) {
  171. msg.setResultCode(200);
  172. msg.setReturnCode(500);
  173. } else {
  174. msg.setResultCode(200);
  175. msg.setReturnCode(200);
  176. }
  177. return msg;
  178. }
  179. /**
  180. * 跳转到完成签收记录页面
  181. *
  182. * @return
  183. */
  184. @RequiresPermissions("signclosed:update:signclosed")
  185. @RequestMapping(value = "/to_complete_signclosed")
  186. public ModelAndView toCompleteDetect(HttpServletRequest request,Integer signclosedId) {
  187. ModelAndView mv = new ModelAndView("cm/signclosed/complete_signclosed");
  188. //获取所有待收产品及其颜色,配件
  189. if(signclosedId == null){
  190. return mv;
  191. }
  192. ComplaintSignclosedInfo complaintSignclosedInfo = complaintSignclosedInfoService.getSignclosedById(signclosedId);
  193. List<AwaitingSignclosedProductInfo> signclosedList = awaitingSignclosedProductInfoService.listBySignclosedId(signclosedId);
  194. mv.addObject("signclosedList",signclosedList);
  195. mv.addObject("complaintSignclosedInfo",complaintSignclosedInfo);
  196. return mv;
  197. }
  198. /**
  199. * 完成签收信息
  200. * @param request
  201. * @return
  202. * @throws Exception
  203. */
  204. @RequiresPermissions("signclosed:update:signclosed")
  205. @ResponseBody
  206. @RequestMapping("/complete_signclosed")
  207. public ResponseJson completeSignclosed(HttpServletRequest request,ComplaintSignclosedInfo signclosedInfo) throws Exception {
  208. ResponseJson msg = new ResponseJson();
  209. if(signclosedInfo == null){
  210. msg.setResultCode(500);
  211. msg.setReturnCode(500);
  212. return msg;
  213. }
  214. /**签收产品**/
  215. String[] alreadyColorName = request.getParameterValues("alreadyColorName");
  216. String[] alreadyFittingsName = request.getParameterValues("alreadyFittingsName");
  217. if(alreadyColorName == null && alreadyFittingsName == null){
  218. msg.setResultCode(200);
  219. msg.setReturnCode(502);
  220. return msg;
  221. }
  222. Map<String,Integer> alreadyColorMap = new HashMap<>();
  223. Map<String,String[]> machineNumberMap = new HashMap<>();
  224. if(alreadyColorName != null && alreadyColorName.length> 0){
  225. for (int i = 0;i<alreadyColorName.length;i++){
  226. /**获取机器数量**/
  227. String number = request.getParameter("alreadyColorId"+alreadyColorName[i]);
  228. alreadyColorMap.put(alreadyColorName[i],Integer.valueOf(number));
  229. }
  230. }
  231. Map<String, Integer> alreadyFittingsMap = new HashMap<>();
  232. if(alreadyFittingsName != null && alreadyFittingsName.length> 0) {
  233. for (int i = 0; i < alreadyFittingsName.length; i++) {
  234. alreadyFittingsMap.put(alreadyFittingsName[i], Integer.valueOf(request.getParameter("alreadyFittingsId" + alreadyFittingsName[i])));
  235. }
  236. }
  237. String signclosedDate = request.getParameter("signclosed_date");
  238. if(signclosedDate != null){
  239. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  240. signclosedInfo.setSignclosedDate(format.parse(signclosedDate));
  241. }
  242. boolean num = complaintSignclosedInfoService.updateSignclosedById(signclosedInfo,alreadyColorMap,machineNumberMap,alreadyFittingsMap);
  243. if (!num) {
  244. msg.setResultCode(500);
  245. msg.setReturnCode(500);
  246. } else {
  247. msg.setResultCode(200);
  248. msg.setReturnCode(200);
  249. }
  250. return msg;
  251. }
  252. /**
  253. * 跳转到修改备注页面
  254. *
  255. * @return
  256. */
  257. @RequiresPermissions("signclosed:update:signclosed")
  258. @RequestMapping(value = "/to_update_remark")
  259. public ModelAndView toUpdateRemark(HttpServletRequest request,Integer signclosedId) {
  260. ModelAndView mv = new ModelAndView("cm/signclosed/update_remark");
  261. ComplaintSignclosedInfo complaintSignclosedInfo = complaintSignclosedInfoService.getSignclosedById(signclosedId);
  262. mv.addObject("signclosedId",signclosedId);
  263. mv.addObject("complaintSignclosedInfo",complaintSignclosedInfo);
  264. return mv;
  265. }
  266. /**
  267. * 跳转到客服修改备注页面
  268. *
  269. * @return
  270. */
  271. @RequiresPermissions("signclosed:update:signclosed")
  272. @RequestMapping(value = "/to_update_customer_remark")
  273. public ModelAndView toUpdateCustomerRemark(HttpServletRequest request,Integer signclosedId) {
  274. ModelAndView mv = new ModelAndView("cm/signclosed/update_customer_remark");
  275. ComplaintSignclosedInfo complaintSignclosedInfo = complaintSignclosedInfoService.getSignclosedById(signclosedId);
  276. mv.addObject("signclosedId",signclosedId);
  277. mv.addObject("complaintSignclosedInfo",complaintSignclosedInfo);
  278. return mv;
  279. }
  280. /**
  281. * 修改备注
  282. *
  283. * @return
  284. */
  285. @ResponseBody
  286. @RequiresPermissions("signclosed:update:signclosed")
  287. @RequestMapping(value = "/update_remark")
  288. public ResponseJson updateRemark(HttpServletRequest request,ComplaintSignclosedInfo signclosedInfo){
  289. ResponseJson msg = new ResponseJson();
  290. if(signclosedInfo == null){
  291. msg.setResultCode(500);
  292. msg.setReturnCode(500);
  293. return msg;
  294. }
  295. Integer num = complaintSignclosedInfoService.updateSignclosedById(signclosedInfo);
  296. if (num < 1) {
  297. msg.setResultCode(500);
  298. msg.setReturnCode(500);
  299. } else {
  300. msg.setResultCode(200);
  301. msg.setReturnCode(200);
  302. }
  303. return msg;
  304. }
  305. /**
  306. * 跳转到修改寄件人信息页面
  307. *
  308. * @return
  309. */
  310. @RequiresPermissions("signclosed:update:signclosed")
  311. @RequestMapping(value = "/to_update_sender")
  312. public ModelAndView toUpdateSender(HttpServletRequest request,Integer signclosedId) {
  313. ModelAndView mv = new ModelAndView("cm/signclosed/update_sender");
  314. ComplaintSignclosedInfo complaintSignclosedInfo = complaintSignclosedInfoService.getSignclosedById(signclosedId);
  315. mv.addObject("signclosedId",signclosedId);
  316. mv.addObject("complaintSignclosedInfo",complaintSignclosedInfo);
  317. return mv;
  318. }
  319. /**
  320. * 跳转到转入品质页面
  321. *
  322. * @return
  323. */
  324. @RequiresPermissions("signclosed:update:signclosed")
  325. @RequestMapping(value = "/to_into_complaint")
  326. public ModelAndView tointoComplaint(HttpServletRequest request,Integer signclosedId) {
  327. ModelAndView mv = new ModelAndView("cm/signclosed/init_complaint");
  328. ComplaintSignclosedInfo complaintSignclosedInfo = complaintSignclosedInfoService.getSignclosedById(signclosedId);
  329. List<SignclosedProductInfo> listProductInfo = complaintSignclosedInfoService.listSignclosedById(signclosedId);
  330. mv.addObject("signclosedId",signclosedId);
  331. mv.addObject("customerId",complaintSignclosedInfo.getSignclosedCustomerId());
  332. mv.addObject("listProductInfo",listProductInfo);
  333. return mv;
  334. }
  335. /**
  336. * 转入品质(修改状态)
  337. *
  338. * @return
  339. */
  340. @ResponseBody
  341. @RequiresPermissions("signclosed:update:signclosed")
  342. @RequestMapping(value = "/update_states")
  343. public ResponseJson updateStates(HttpServletRequest request,ComplaintSignclosedInfo complaintSignclosedInfo){
  344. ResponseJson msg = new ResponseJson();
  345. if(complaintSignclosedInfo == null){
  346. msg.setResultCode(500);
  347. msg.setReturnCode(500);
  348. return msg;
  349. }
  350. complaintSignclosedInfo.setSignclosedState(2);
  351. complaintSignclosedInfoService.updateSignclosedById(complaintSignclosedInfo);
  352. msg.setResultCode(200);
  353. msg.setReturnCode(200);
  354. return msg;
  355. }
  356. /**
  357. * 转入品质
  358. *
  359. * @return
  360. */
  361. @ResponseBody
  362. @RequiresPermissions("signclosed:update:signclosed")
  363. @RequestMapping(value = "/into_complaint")
  364. public ResponseJson intoComplaint(HttpServletRequest request,ComplaintSignclosedInfo complaintSignclosedInfo){
  365. ResponseJson msg = new ResponseJson();
  366. if(complaintSignclosedInfo == null){
  367. msg.setResultCode(500);
  368. msg.setReturnCode(500);
  369. return msg;
  370. }
  371. //根据客诉id查询是否已存在品检信息
  372. ComplaintDetectInfo complaintDetectInfo = new ComplaintDetectInfo();
  373. if(complaintDetectInfoService.getDetectByCustomerId(complaintSignclosedInfo.getSignclosedCustomerId()) == null){
  374. complaintDetectInfo.setCustomerId(complaintSignclosedInfo.getSignclosedCustomerId());
  375. complaintDetectInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId());
  376. complaintDetectInfo.setDetectCreateTime(new Date());
  377. Integer i = complaintDetectInfoService.insert(complaintDetectInfo);
  378. if(i != 1){
  379. msg.setResultCode(500);
  380. msg.setReturnCode(500);
  381. return msg;
  382. }
  383. }
  384. //签收产品id集合
  385. String[] productIdList = request.getParameterValues("products");
  386. //添加品检项
  387. List<Integer> itemIdList = new ArrayList<>();
  388. List<ComplaintDetectItem> listDetectItem = new ArrayList<>();
  389. for(String productid : productIdList){
  390. SignclosedProductInfo signclosedProductInfo = cmplaintSignclosedProductInfoMapper.listSignclosedProductInfoById(Integer.valueOf(productid));
  391. ComplaintDetectItem detectItem = new ComplaintDetectItem();
  392. detectItem.setDetectId(complaintDetectInfo.getDetectId());
  393. detectItem.setDetectItemCreateTime(new Date());
  394. detectItem.setProductId(signclosedProductInfo.getSignclosedProductId());
  395. detectItem.setDetectProductNumber(signclosedProductInfo.getProductName());
  396. detectItem.setDetectItemState(1);
  397. detectItem.setCustomerId(complaintSignclosedInfo.getSignclosedCustomerId());
  398. Integer msg3 = complaintDetectInfoService.insertItem(detectItem);
  399. if(msg3 != 1){
  400. itemIdList.add(detectItem.getDetectItemId());
  401. }
  402. }
  403. msg.setResultCode(200);
  404. msg.setReturnCode(200);
  405. msg.addResponseKeyValue("itemIdList",itemIdList);
  406. return msg;
  407. }
  408. /**
  409. * 根据产品名称查询产品数据
  410. *
  411. * @return
  412. */
  413. @ResponseBody
  414. @RequiresPermissions("signclosed:select:signclosed")
  415. @RequestMapping(value = "/select_product")
  416. public ResponseJson selectProduct(HttpServletRequest request,String productName){
  417. ResponseJson msg = new ResponseJson();
  418. if(productName == null){
  419. msg.setResultCode(500);
  420. msg.setReturnCode(500);
  421. return msg;
  422. }
  423. //获取所有产品及其颜色,配件
  424. Product product = new Product();
  425. product.setProductName(productName);
  426. List<Product> productList = productService.listProductAndColorAndfittings(product);
  427. if (productList.size() == 0) {
  428. msg.setResultCode(500);
  429. msg.setReturnCode(500);
  430. } else {
  431. msg.setResultCode(200);
  432. msg.setReturnCode(200);
  433. msg.addResponseKeyValue("productList",productList);
  434. }
  435. return msg;
  436. }
  437. /**
  438. * 获取仓储信息
  439. *
  440. * @return
  441. */
  442. @ResponseBody
  443. @RequiresPermissions("signclosed:select:signclosed")
  444. @RequestMapping(value = "/select_signclosed_info")
  445. public ResponseJson selectProduct(HttpServletRequest request,Integer signclosedId){
  446. if(signclosedId == null){
  447. return new ResponseJson(500, "未获取到仓储信息!", 500);
  448. }
  449. ComplaintSignclosedInfo complaintSignclosedInfo = complaintSignclosedInfoService.getSignclosedById(signclosedId);
  450. return new ResponseJson(500, "未获取到仓储信息!", 500);
  451. }
  452. /**
  453. * 跳转到关联客诉页面
  454. *
  455. * @return
  456. */
  457. @RequiresPermissions("signclosed:update:signclosed")
  458. @RequestMapping(value = "/to_associated_customer")
  459. public ModelAndView toAssociatedCustomer(HttpServletRequest request,Integer signclosedId) {
  460. ModelAndView mv = new ModelAndView("cm/signclosed/associated_customer");
  461. ComplaintSignclosedInfo complaintSignclosedInfo = complaintSignclosedInfoService.getSignclosedById(signclosedId);
  462. mv.addObject("signclosedId",signclosedId);
  463. mv.addObject("complaintSignclosedInfo",complaintSignclosedInfo);
  464. return mv;
  465. }
  466. /**
  467. * 关联客诉
  468. *
  469. * @return
  470. */
  471. @ResponseBody
  472. @RequiresPermissions("signclosed:update:signclosed")
  473. @RequestMapping(value = "/associated_customer")
  474. public ResponseJson associatedCustomer(HttpServletRequest request,ComplaintSignclosedInfo signclosedInfo){
  475. ResponseJson msg = new ResponseJson();
  476. if(signclosedInfo == null){
  477. msg.setResultCode(500);
  478. msg.setReturnCode(500);
  479. return msg;
  480. }
  481. if(signclosedInfo.getSignclosedCustomerId() == null){
  482. msg.setResultCode(500);
  483. msg.setReturnCode(500);
  484. return msg;
  485. }
  486. int num = complaintSignclosedInfoService.addDetect(signclosedInfo);
  487. if (num < 1) {
  488. msg.setResultCode(500);
  489. msg.setReturnCode(500);
  490. } else {
  491. msg.setResultCode(200);
  492. msg.setReturnCode(200);
  493. }
  494. return msg;
  495. }
  496. }