AdminScmOrderController.java 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597
  1. package com.iamberry.rst.controllers.scm;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.iamberry.rst.core.cm.StoreShip;
  4. import com.iamberry.rst.core.order.EOrderRequestData;
  5. import com.iamberry.rst.core.order.ProductColor;
  6. import com.iamberry.rst.core.page.PagedResult;
  7. import com.iamberry.rst.core.scm.ScmOrderInfo;
  8. import com.iamberry.rst.core.scm.ScmOrderItem;
  9. import com.iamberry.rst.core.sys.Admin;
  10. import com.iamberry.rst.core.tools.LogisticsInfo;
  11. import com.iamberry.rst.util.GenerateKeyUtil;
  12. import com.iamberry.rst.utils.OrderUtils;
  13. import com.iamberry.rst.faces.cm.StoreShipService;
  14. import com.iamberry.rst.faces.order.LogisticsInfoService;
  15. import com.iamberry.rst.faces.product.ProductService;
  16. import com.iamberry.rst.faces.scm.ScmOrderInfoService;
  17. import com.iamberry.rst.faces.scm.ScmOrderItemService;
  18. import com.iamberry.rst.utils.*;
  19. import com.iamberry.wechat.tools.AddrUtil;
  20. import com.iamberry.wechat.tools.DateTimeUtil;
  21. import com.iamberry.wechat.tools.ResponseJson;
  22. import com.iamberry.wechat.tools.UUIDGenerator;
  23. import net.sf.json.JSONArray;
  24. import org.apache.shiro.authz.annotation.Logical;
  25. import org.apache.shiro.authz.annotation.RequiresPermissions;
  26. import org.slf4j.Logger;
  27. import org.slf4j.LoggerFactory;
  28. import org.springframework.beans.factory.annotation.Autowired;
  29. import org.springframework.stereotype.Controller;
  30. import org.springframework.web.bind.annotation.RequestMapping;
  31. import org.springframework.web.bind.annotation.RequestParam;
  32. import org.springframework.web.bind.annotation.ResponseBody;
  33. import org.springframework.web.multipart.commons.CommonsMultipartFile;
  34. import org.springframework.web.servlet.ModelAndView;
  35. import javax.servlet.http.HttpServletRequest;
  36. import java.io.File;
  37. import java.io.FileWriter;
  38. import java.io.IOException;
  39. import java.util.*;
  40. /**
  41. * 上朵定制-订单列表
  42. */
  43. @Controller
  44. @RequestMapping("/admin/scm_order")
  45. public class AdminScmOrderController {
  46. private static final Logger LOGGER = LoggerFactory.getLogger(AdminScmOrderController.class);
  47. @Autowired
  48. private ScmOrderInfoService scmOrderInfoService;
  49. @Autowired
  50. private ScmOrderItemService scmOrderItemService;
  51. @Autowired
  52. private LogisticsInfoService logisticsInfoService;
  53. @Autowired
  54. private ProductService productService;
  55. @Autowired
  56. private GenerateKeyUtil generateKeyUtil;
  57. @Autowired
  58. private StoreShipService storeShipService;
  59. private static final String pathHead = "D";
  60. /**
  61. * 订单列表
  62. * @param request
  63. * @return
  64. */
  65. @RequiresPermissions("scmOrder:order:list")
  66. @RequestMapping("/order_list")
  67. public ModelAndView orderList(HttpServletRequest request, ScmOrderItem scmOrderItem,
  68. @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
  69. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  70. @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) {
  71. ModelAndView mv = new ModelAndView("scm/scm_order_list");
  72. PagedResult<ScmOrderItem> pagedResult = scmOrderItemService.getScmOrderItemListPage(pageNO, pageSize, scmOrderItem, totalNum == 0);
  73. if (totalNum != 0){
  74. pagedResult.setTotal(totalNum);
  75. }
  76. StitchAttrUtil.getSa()
  77. .addDatePro("yyyy-MM-dd HH:mm:ss","startDate","endDate")
  78. .setModelAndView(scmOrderItem, mv, "/admin/scm_order/order_list", pagedResult);
  79. List<LogisticsInfo> logisticsInfoList = logisticsInfoService.getLogisticsInfoList(new LogisticsInfo());
  80. mv.addObject("logisticsInfoList",logisticsInfoList);
  81. return mv;
  82. }
  83. /**
  84. * 添加订单
  85. * @param request
  86. * @return
  87. */
  88. @RequiresPermissions("scmOrder:order:add")
  89. @RequestMapping("/to_add_order")
  90. public ModelAndView toAddOrder(HttpServletRequest request) {
  91. ModelAndView mv = new ModelAndView("scm/scm_add_order");
  92. List<LogisticsInfo> logisticsInfoList = logisticsInfoService.getLogisticsInfoList(new LogisticsInfo());
  93. mv.addObject("logisticsInfoList",logisticsInfoList);
  94. return mv;
  95. }
  96. /**
  97. * 添加订单
  98. * @param request
  99. * @param scmOrderInfo
  100. * @param orderItemString
  101. * @return
  102. * @throws Exception
  103. */
  104. @ResponseBody
  105. @RequestMapping("/add_order")
  106. @RequiresPermissions("scmOrder:order:add")
  107. public ResponseJson addSalesOrder(HttpServletRequest request,ScmOrderInfo scmOrderInfo,String orderItemString) throws Exception {
  108. ResponseJson rj = new ResponseJson();
  109. if(scmOrderInfo.getOrderAddressTel() != null && !"".equals(scmOrderInfo.getOrderAddressTel())){
  110. scmOrderInfo.setOrderAddressTel(scmOrderInfo.getOrderAddressTel().trim());
  111. }
  112. Admin admin = AdminUtils.getLoginAdmin();
  113. JSONArray jsonArray = JSONArray.fromObject(orderItemString);
  114. List<ScmOrderItem> salesOrderItemList = (List) JSONArray.toCollection(jsonArray, ScmOrderItem.class);
  115. for (ScmOrderItem scmOrderItem:salesOrderItemList) {
  116. if(scmOrderItem.getOrderItemNum() > 0 && scmOrderItem.getOrderItemColorId() > 0){
  117. ProductColor productColor = productService.getProduceColor(scmOrderItem.getOrderItemColorId());
  118. if(productColor == null){
  119. return new ResponseJson(500, "商品不存在", 500);
  120. }
  121. scmOrderItem.setOrderItemProductId(productColor.getColorProductId()); ////产品id
  122. scmOrderItem.setOrderItemProductType(productColor.getProductType());
  123. scmOrderItem.setOrderItemProductName(productColor.getProductName());
  124. scmOrderItem.setOrderItemProductPic(productColor.getColorPicture());
  125. scmOrderItem.setOrderItemColorName(productColor.getColorName());
  126. scmOrderItem.setOrderItemColorBar(productColor.getColorBar()); ///产品SKU码(百胜)
  127. scmOrderItem.setOrderItemProductPrice(productColor.getColorPrice());
  128. scmOrderItem.setOrderItemProductDiscount(productColor.getColorDiscount());
  129. scmOrderItem.setOrderItemCreateTime(new Date());
  130. }else{
  131. return new ResponseJson(500, "添加商品错误", 500);
  132. }
  133. }
  134. String orderMadeId = generateKeyUtil.getScmOrderMadeId(); //获取生产编号
  135. String realPath = request.getSession().getServletContext().getRealPath("/common/scmOrder/qrCode/"+orderMadeId+"/");
  136. realPath = realPath+"/";
  137. String name = orderMadeId+".png";
  138. QrCodeUtil.madeQrCode(realPath,name,orderMadeId,200);
  139. String url = "common/scmOrder/qrCode/"+orderMadeId+"/"+orderMadeId+".png";
  140. scmOrderInfo.setOrderMadeId(orderMadeId);
  141. scmOrderInfo.setOrderShippingStatus(0);
  142. scmOrderInfo.setOrderStatus(1);
  143. scmOrderInfo.setOrderAdminId(admin.getAdminId());
  144. scmOrderInfo.setOrderMadeIdPath(url); //二维码地址
  145. scmOrderInfo.setScmOrderItemList(salesOrderItemList);
  146. Integer bl = 0;
  147. String errorMsg = "";
  148. try {
  149. bl = scmOrderInfoService.save(scmOrderInfo);
  150. }catch (Exception e){
  151. errorMsg = e.getMessage();
  152. e.printStackTrace();
  153. return new ResponseJson(500, "添加订单失败,失败原因:"+errorMsg, 500);
  154. }
  155. if(bl > 0){
  156. rj = new ResponseJson(200, "添加订单成功", 200);
  157. rj.addResponseKeyValue("path",realPath);
  158. rj.addResponseKeyValue("orderMadeId",orderMadeId);
  159. return rj;
  160. }else{
  161. return new ResponseJson(500, "添加订单失败,失败原因:"+errorMsg, 500);
  162. }
  163. }
  164. /**
  165. * 修改订单页面
  166. * @param request
  167. * @return
  168. */
  169. @RequiresPermissions("scmOrder:order:update")
  170. @RequestMapping("/to_update_order")
  171. public ModelAndView toUpdateOrder(HttpServletRequest request,Integer orderId) {
  172. ModelAndView mv = new ModelAndView("scm/scm_update_order");
  173. List<LogisticsInfo> logisticsInfoList = logisticsInfoService.getLogisticsInfoList(new LogisticsInfo());
  174. mv.addObject("logisticsInfoList",logisticsInfoList);
  175. mv.addObject("orderId",orderId);
  176. return mv;
  177. }
  178. /**
  179. * 修改订单
  180. * @param request
  181. * @param scmOrderInfo
  182. * @param orderItemString
  183. * @return
  184. * @throws Exception
  185. */
  186. @ResponseBody
  187. @RequestMapping("/update_order")
  188. @RequiresPermissions("scmOrder:order:update")
  189. public ResponseJson updateOrder(HttpServletRequest request,ScmOrderInfo scmOrderInfo,String orderItemString) throws Exception {
  190. ResponseJson rj = new ResponseJson();
  191. if(scmOrderInfo.getOrderAddressTel() != null && !"".equals(scmOrderInfo.getOrderAddressTel())){
  192. scmOrderInfo.setOrderAddressTel(scmOrderInfo.getOrderAddressTel().trim());
  193. }
  194. Admin admin = AdminUtils.getLoginAdmin();
  195. JSONArray jsonArray = JSONArray.fromObject(orderItemString);
  196. List<ScmOrderItem> salesOrderItemList = (List) JSONArray.toCollection(jsonArray, ScmOrderItem.class);
  197. for (ScmOrderItem scmOrderItem:salesOrderItemList) {
  198. if(scmOrderItem.getOrderItemNum() > 0 && scmOrderItem.getOrderItemColorId() > 0){
  199. ProductColor productColor = productService.getProduceColor(scmOrderItem.getOrderItemColorId());
  200. if(productColor == null){
  201. return new ResponseJson(500, "商品不存在或商品错误", 500);
  202. }
  203. scmOrderItem.setOrderItemProductId(productColor.getColorProductId()); ////产品id
  204. scmOrderItem.setOrderItemProductType(productColor.getProductType());
  205. scmOrderItem.setOrderItemProductName(productColor.getProductName());
  206. scmOrderItem.setOrderItemProductPic(productColor.getColorPicture());
  207. scmOrderItem.setOrderItemColorName(productColor.getColorName());
  208. scmOrderItem.setOrderItemColorBar(productColor.getColorBar()); ///产品SKU码(百胜)
  209. scmOrderItem.setOrderItemProductPrice(productColor.getColorPrice());
  210. scmOrderItem.setOrderItemProductDiscount(productColor.getColorDiscount());
  211. scmOrderItem.setOrderItemCreateTime(new Date());
  212. }else{
  213. return new ResponseJson(500, "修改商品错误", 500);
  214. }
  215. }
  216. scmOrderInfo.setScmOrderItemList(salesOrderItemList);
  217. Integer bl = 0;
  218. String errorMsg = "";
  219. try {
  220. bl = scmOrderInfoService.update(scmOrderInfo);
  221. }catch (Exception e){
  222. errorMsg = e.getMessage();
  223. e.printStackTrace();
  224. return new ResponseJson(500, "修改订单失败,失败原因:"+errorMsg, 500);
  225. }
  226. if(bl > 0){
  227. rj = new ResponseJson(200, "修改订单成功", 200);
  228. // rj.addResponseKeyValue("path",realPath);
  229. // rj.addResponseKeyValue("orderMadeId",orderMadeId);
  230. return rj;
  231. }else{
  232. return new ResponseJson(500, "修改订单失败,失败原因:"+errorMsg, 500);
  233. }
  234. }
  235. /**
  236. * 删除订单
  237. * @param request
  238. * @return
  239. * @throws Exception
  240. */
  241. @ResponseBody
  242. @RequestMapping("/delete_order")
  243. @RequiresPermissions("scmOrder:order:delete")
  244. public ResponseJson deleteOrder(HttpServletRequest request,Integer orderId) throws Exception {
  245. ResponseJson rj = new ResponseJson();
  246. ScmOrderInfo scmOrderInfo = scmOrderInfoService.getScmOrderInfoById(orderId);
  247. if(scmOrderInfo == null ){
  248. return new ResponseJson(500, "删除失败", 500);
  249. }
  250. Integer flag = scmOrderInfoService.delete(orderId);
  251. if(flag > 0){
  252. rj = new ResponseJson(200, "删除订单成功", 200);
  253. return rj;
  254. }else{
  255. return new ResponseJson(500, "删除失败", 500);
  256. }
  257. }
  258. /**
  259. * 查询订单
  260. * @param request
  261. * @param scmOrderInfo
  262. * @return
  263. * @throws Exception
  264. */
  265. @ResponseBody
  266. @RequestMapping("/get_order")
  267. @RequiresPermissions(value = {"scmOrder:order:add", "scmOrder:update:add", "scmOrder:order:list", "scmOrder:order:send"}, logical = Logical.OR)
  268. public ResponseJson getOrder(HttpServletRequest request,ScmOrderInfo scmOrderInfo) throws Exception {
  269. if(scmOrderInfo.getOrderId() == null && (scmOrderInfo.getOrderMadeId() == null||"".equals(scmOrderInfo.getOrderMadeId())) &&
  270. (scmOrderInfo.getOrderNo() == null || "".equals(scmOrderInfo.getOrderNo()))){
  271. return new ResponseJson(500, "查询失败", 500);
  272. }
  273. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  274. List<ScmOrderInfo> scmOrderInfoList = scmOrderInfoService.getScmOrderInfoList(scmOrderInfo);
  275. rj.addResponseKeyValue("scmOrderInfoList",scmOrderInfoList);
  276. return rj;
  277. }
  278. /**
  279. * 查询订单 -- 生产编号
  280. * @param request
  281. * @param orderMadeId
  282. * @return
  283. * @throws Exception
  284. */
  285. @ResponseBody
  286. @RequestMapping("/get_order_madeId")
  287. @RequiresPermissions(value = {"scmOrder:order:add", "scmOrder:update:add", "scmOrder:order:list", "scmOrder:order:send"}, logical = Logical.OR)
  288. public ResponseJson getOrderNo(HttpServletRequest request,String orderMadeId) throws Exception {
  289. ScmOrderInfo scmOrderInfo = scmOrderInfoService.getScmOrderInfoByMadeId(orderMadeId);
  290. if(scmOrderInfo == null){
  291. ResponseJson rj = new ResponseJson(500, "查询失败", 500);
  292. return rj;
  293. }
  294. ScmOrderItem scmOrderItem = new ScmOrderItem();
  295. scmOrderItem.setOrderId(scmOrderInfo.getOrderId());
  296. List<ScmOrderItem> scmOrderItemList = scmOrderItemService.getScmOrderItemList(scmOrderItem);
  297. scmOrderInfo.setScmOrderItemList(scmOrderItemList);
  298. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  299. rj.addResponseKeyValue("scmOrderInfo",scmOrderInfo);
  300. return rj;
  301. }
  302. /**
  303. * 上传设计文件
  304. * @RequestParam("file") 将name=file控件得到的文件封装成CommonsMultipartFile 对象
  305. */
  306. @ResponseBody
  307. @RequestMapping("/fileUpload")
  308. public ResponseJson fileUpload(HttpServletRequest request, @RequestParam("file") CommonsMultipartFile file) throws IOException {
  309. ResponseJson responseJson = new ResponseJson();
  310. System.out.println("fileName:"+file.getOriginalFilename());
  311. String realPath = request.getSession().getServletContext().getRealPath("/");
  312. if(file.getOriginalFilename() == null || "".equals(file.getOriginalFilename())){
  313. responseJson.setReturnCode(500);
  314. return responseJson;
  315. }
  316. String oldName = file.getOriginalFilename();
  317. //名称
  318. String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().toString().lastIndexOf("."));
  319. String name = System.currentTimeMillis()+suffix;
  320. String path = UploadFileUtils.scmUploadFile(realPath,name,file);
  321. String url = request.getScheme()+"://"+ request.getServerName();
  322. responseJson.setReturnCode(200);
  323. responseJson.addResponseKeyValue("allImgUrl",url + "/" + path);
  324. responseJson.addResponseKeyValue("imgUrl",path);
  325. responseJson.addResponseKeyValue("oldName",oldName);
  326. responseJson.addResponseKeyValue("name",name);
  327. return responseJson;
  328. }
  329. /**
  330. * 订单发货页面
  331. * @param request
  332. * @return
  333. */
  334. @RequiresPermissions("scmOrder:order:send")
  335. @RequestMapping("/order_ship")
  336. public ModelAndView orderShip(HttpServletRequest request) {
  337. ModelAndView mv = new ModelAndView("scm/scm_send_order");
  338. return mv;
  339. }
  340. /**
  341. * 订单发货
  342. * @param request
  343. * @param scmOrderInfo
  344. * @return
  345. * @throws Exception
  346. */
  347. @ResponseBody
  348. @RequestMapping("/send_order")
  349. @RequiresPermissions(value = {"scmOrder:order:send"}, logical = Logical.OR)
  350. public ResponseJson sendOrder(HttpServletRequest request,ScmOrderInfo scmOrderInfo) throws Exception {
  351. if(scmOrderInfo.getOrderId() == null && (scmOrderInfo.getOrderMadeId() == null||"".equals(scmOrderInfo.getOrderMadeId())) &&
  352. (scmOrderInfo.getOrderNo() == null || "".equals(scmOrderInfo.getOrderNo()))){
  353. return new ResponseJson(500, "查询失败", 500);
  354. }
  355. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  356. List<ScmOrderInfo> scmOrderInfoList = scmOrderInfoService.getScmOrderInfoList(scmOrderInfo);
  357. rj.addResponseKeyValue("scmOrderInfoList",scmOrderInfoList);
  358. return rj;
  359. }
  360. /**
  361. * 打单发货
  362. * @param orderMadeId
  363. * @param request
  364. * @return
  365. */
  366. @ResponseBody
  367. @RequestMapping("/scm_print_order")
  368. @RequiresPermissions("scmOrder:order:send")
  369. public ResponseJson printOrder(@RequestParam("orderMadeId") String orderMadeId,
  370. HttpServletRequest request) {
  371. ScmOrderInfo scmOrderInfo = scmOrderInfoService.getScmOrderInfoByMadeId(orderMadeId);
  372. if(scmOrderInfo == null){
  373. LOGGER.error("{} 获取电子面单失败,原因:{}", orderMadeId, "未查询到该订单");
  374. return ResponseJson.getFAILURE().addResponseKeyValue("error","未查询到该订单");
  375. }
  376. if(scmOrderInfo.getOrderShippingStatus() != 0){
  377. LOGGER.error("{} 获取电子面单失败,原因:{}", orderMadeId, "该订单已发货");
  378. return ResponseJson.getFAILURE().addResponseKeyValue("error","该订单已发货");
  379. }
  380. ScmOrderItem scmOrderItem = new ScmOrderItem();
  381. scmOrderItem.setOrderId(scmOrderInfo.getOrderId());
  382. List<ScmOrderItem> scmOrderItemList = scmOrderItemService.getScmOrderItemList(scmOrderItem);
  383. scmOrderInfo.setScmOrderItemList(scmOrderItemList);
  384. StoreShip storeShip = null;
  385. if(scmOrderInfo.getOrderStoreId() != null){
  386. storeShip = storeShipService.getStoreShipByStoreId(scmOrderInfo.getOrderStoreId());
  387. }
  388. if(storeShip == null){
  389. LOGGER.error("{} 获取电子面单失败,原因:{}", orderMadeId, "该订单没有绑定店铺或店铺没有发货人信息");
  390. return ResponseJson.getFAILURE().addResponseKeyValue("error","该订单没有绑定店铺或店铺没有发货人信息");
  391. }
  392. String post = scmOrderInfo.getOrderPostFirm();
  393. Integer orderId = scmOrderInfo.getOrderId();
  394. /*
  395. * 组装数据
  396. */
  397. EOrderRequestData eOrderRequestData = new EOrderRequestData();
  398. eOrderRequestData.ShipperCode = (post);
  399. eOrderRequestData.OrderCode = (UUID.randomUUID().toString().replace("-", ""));
  400. eOrderRequestData.PayType = (3);
  401. eOrderRequestData.ExpType = ("1");
  402. eOrderRequestData.Cost = (0.00);
  403. eOrderRequestData.OtherCost = (0.0);
  404. eOrderRequestData.Remark = scmOrderInfo.getOrderMadeId() + "-" + scmOrderInfo.getOrderNo();
  405. // 不同的快递公司需要做不同的处理
  406. if (post.equalsIgnoreCase("EMS")) {
  407. // 省内EMS
  408. eOrderRequestData.CustomerName = ("90000009971400");
  409. eOrderRequestData.CustomerPwd = ("90000009971400");
  410. } else if (post.equalsIgnoreCase("SF")) {
  411. // 顺丰
  412. eOrderRequestData.MonthCode = ("7690035114");
  413. } else if (post.equalsIgnoreCase("YZBK")) {
  414. // 省外EMS
  415. eOrderRequestData.CustomerName = ("90000009971400");
  416. eOrderRequestData.CustomerPwd = ("90000009971400");
  417. eOrderRequestData.ExpType = "9";
  418. eOrderRequestData.ShipperCode = "EMS";
  419. } else if (post.equalsIgnoreCase("STO")) {
  420. // 申通快递
  421. eOrderRequestData.CustomerName = ("爱贝源");
  422. /*eOrderRequestData.CustomerPwd = ("Iamberry321.");*/
  423. eOrderRequestData.CustomerPwd = ("Sto20200211");
  424. eOrderRequestData.SendSite = ("广东东莞公司");
  425. } else if (post.equalsIgnoreCase("DBL")) {
  426. //德邦 (360特惠件)
  427. eOrderRequestData.CustomerName = ("651476854");
  428. eOrderRequestData.ExpType = ("2");
  429. }
  430. LOGGER.info( "===orderNO:" + scmOrderInfo.getOrderNo() + "快递方式:" + post+ "订单编号:"+ scmOrderInfo.getOrderId());
  431. // 收件人信息
  432. String[] addrs = scmOrderInfo.getOrderAddressInfo().split(" ");
  433. if (addrs.length <= 3) {
  434. addrs = scmOrderInfo.getOrderAddressInfo().split("-");
  435. }
  436. // 获取收件人邮编
  437. String postCode = AddrUtil.getPostCode(addrs[2]);
  438. if (postCode == null || "".equals(postCode)) {
  439. postCode = AddrUtil.getPostCode(addrs[1]);
  440. }
  441. if (postCode == null || "".equals(postCode)) {
  442. postCode = AddrUtil.getPostCode(addrs[0]);
  443. }
  444. Map<String, Object> receiver = new HashMap<String, Object>();
  445. receiver.put("Name", scmOrderInfo.getOrderAddressName());
  446. receiver.put("Tel", scmOrderInfo.getOrderAddressTel());
  447. receiver.put("ProvinceName", AddrUtil.dealProvince(addrs[0]));
  448. receiver.put("CityName", addrs[1]);
  449. receiver.put("ExpAreaName", addrs[2]);
  450. receiver.put("Address", scmOrderInfo.getOrderAddressInfo());
  451. receiver.put("PostCode", postCode);
  452. eOrderRequestData.Receiver = (receiver);
  453. // 发件人信息
  454. Map<String, Object> sender = new HashMap<String, Object>();
  455. sender.put("Name", storeShip.getStoreShipName());
  456. sender.put("Tel", storeShip.getStoreShipTel());
  457. sender.put("ProvinceName", storeShip.getStoreShipProvince());
  458. sender.put("CityName", storeShip.getStoreShipCity());
  459. sender.put("ExpAreaName", "清溪镇");
  460. sender.put("Address", storeShip.getStoreShipAddress());
  461. sender.put("PostCode", "523660");
  462. eOrderRequestData.Sender = (sender);
  463. // 产品信息
  464. List<Map<String, Object>> commodity = new ArrayList<>();
  465. // 整个产品的重量
  466. Double colorIsWeight = 0.00;
  467. StringBuilder goodName = new StringBuilder();
  468. int Goodsquantity = 0;
  469. for (ScmOrderItem temp : scmOrderItemList) {
  470. goodName.append(temp.getProductAbbreviation())
  471. .append("(").append(temp.getColorAbbreviation()).append(")*").append(temp.getOrderItemNum()).append(";");
  472. if(temp.getColorIsWeight() != null){
  473. colorIsWeight += temp.getColorIsWeight();
  474. }
  475. Goodsquantity += temp.getOrderItemNum();
  476. }
  477. // 20181113增加需求:产品名称后面增加打印订单日期
  478. goodName.append("【D").append(DateTimeUtil.format(new Date(), "MMdd")).append("】");
  479. String uuid = UUIDGenerator.getUUID().substring(0, 8);
  480. // 增加产品信息
  481. Map<String, Object> product1 = new HashMap<String, Object>();
  482. product1.put("GoodsName", uuid);
  483. product1.put("Goodsquantity", Goodsquantity);
  484. // 计算产品重量deliver_statistics
  485. product1.put("GoodsWeight", colorIsWeight/1000);
  486. commodity.add(product1);
  487. eOrderRequestData.Commodity = (commodity);
  488. eOrderRequestData.Weight = (colorIsWeight/1000);
  489. eOrderRequestData.Quantity = (1);
  490. eOrderRequestData.IsReturnPrintTemplate = (1);
  491. try {
  492. String json = OrderUtils.orderOnlineByJson(eOrderRequestData);
  493. JSONObject jsonObject = JSONObject.parseObject(json);
  494. boolean flag = jsonObject.getBoolean("Success");
  495. if (flag) {
  496. // 替换产品名称
  497. json = json.replace(uuid, goodName.toString());
  498. // 获取电子面单成功
  499. String code = jsonObject.getJSONObject("Order").getString("LogisticCode");
  500. // 订单发货
  501. ScmOrderInfo soi = new ScmOrderInfo();
  502. soi.setOrderPostFirm(eOrderRequestData.ShipperCode);
  503. soi.setOrderPostNum(code);
  504. soi.setOrderShippingStatus(1);
  505. soi.setOrderSendTime(new Date());
  506. soi.setOrderId(orderId);
  507. Integer fl = scmOrderInfoService.updateStatus(soi);
  508. // 保存HTML
  509. String filePath = request.getServletContext().getRealPath("/common/scmOrder/");
  510. File dir = new File(filePath + File.separator + "send_order");
  511. if (!dir.exists()) {
  512. dir.mkdir();
  513. }
  514. File file = new File(dir.getAbsolutePath() + File.separator + orderMadeId + ".txt");
  515. if (!file.createNewFile()) {
  516. return ResponseJson.getFAILURE().addResponseKeyValue("error", "创建文件失败");
  517. }
  518. FileWriter fileWriter = null;
  519. try {
  520. fileWriter = new FileWriter(file, false);
  521. fileWriter.write(json);
  522. } catch (Exception e) {
  523. LOGGER.error("", e);
  524. } finally {
  525. if (fileWriter != null) {
  526. fileWriter.close();
  527. }
  528. }
  529. } else {
  530. // 获取电子面单失败
  531. LOGGER.error("{} 获取电子面单失败,原因:{}", orderId, jsonObject.get("Reason"));
  532. }
  533. return ResponseJson.getSUCCESS().addResponseKeyValue("json", json);
  534. } catch (Exception e) {
  535. LOGGER.error("", e);
  536. return ResponseJson.getFAILURE().addResponseKeyValue("error", e.getMessage());
  537. }
  538. }
  539. }