DmDealerController.java 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914
  1. package com.iamberry.rst.controllers.dm;
  2. import com.iamberry.rst.core.cm.SalesOrder;
  3. import com.iamberry.rst.core.cm.StoreInfo;
  4. import com.iamberry.rst.core.dm.*;
  5. import com.iamberry.rst.core.order.OrderWarehouse;
  6. import com.iamberry.rst.core.order.ProductColor;
  7. import com.iamberry.rst.core.page.PageRequest;
  8. import com.iamberry.rst.core.page.PagedResult;
  9. import com.iamberry.rst.core.pts.PtsBatch;
  10. import com.iamberry.rst.core.sys.Admin;
  11. import com.iamberry.rst.core.tools.LogisticsInfo;
  12. import com.iamberry.rst.faces.cm.PostOrderNumService;
  13. import com.iamberry.rst.faces.cm.SalesOrderService;
  14. import com.iamberry.rst.faces.cm.StoreInfoService;
  15. import com.iamberry.rst.faces.dm.*;
  16. import com.iamberry.rst.faces.order.LogisticsInfoService;
  17. import com.iamberry.rst.faces.product.ProductService;
  18. import com.iamberry.rst.faces.sys.SysService;
  19. import com.iamberry.rst.utils.AdminUtils;
  20. import com.iamberry.rst.utils.StitchAttrUtil;
  21. import com.iamberry.rst.utils.UploadFileUtils;
  22. import com.iamberry.wechat.tools.ObjectExcelView;
  23. import com.iamberry.wechat.tools.ResponseJson;
  24. import net.sf.ezmorph.object.DateMorpher;
  25. import net.sf.json.JSONArray;
  26. import net.sf.json.util.JSONUtils;
  27. import org.apache.shiro.authz.annotation.Logical;
  28. import org.apache.shiro.authz.annotation.RequiresPermissions;
  29. import org.slf4j.Logger;
  30. import org.slf4j.LoggerFactory;
  31. import org.springframework.beans.factory.annotation.Autowired;
  32. import org.springframework.stereotype.Controller;
  33. import org.springframework.web.bind.annotation.RequestMapping;
  34. import org.springframework.web.bind.annotation.RequestParam;
  35. import org.springframework.web.bind.annotation.ResponseBody;
  36. import org.springframework.web.multipart.commons.CommonsMultipartFile;
  37. import org.springframework.web.servlet.ModelAndView;
  38. import javax.servlet.http.HttpServletRequest;
  39. import java.io.IOException;
  40. import java.io.UnsupportedEncodingException;
  41. import java.net.URLDecoder;
  42. import java.text.SimpleDateFormat;
  43. import java.util.*;
  44. @Controller
  45. @RequestMapping("/admin/dealer")
  46. public class DmDealerController {
  47. private Logger logger = LoggerFactory.getLogger(DmDealerController.class);
  48. @Autowired
  49. private SysService sysService;
  50. @Autowired
  51. private DmDealerService dmDealerService;
  52. @Autowired
  53. private DealerContactService dealerContactService;
  54. @Autowired
  55. private DealerChannelService dealerChannelService;
  56. @Autowired
  57. private DealerProductService dealerProductService;
  58. @Autowired
  59. private DealerProductStoreService dealerProductStoreService;
  60. @Autowired
  61. private CooperationAgreeService cooperationAgreeService;
  62. @Autowired
  63. private StoreInfoService storeInfoService;
  64. @Autowired
  65. private DealerChannelStoreService dealerChannelStoreService;
  66. @Autowired
  67. private SalesOrderService salesOrderService;
  68. @Autowired
  69. private LogisticsInfoService logisticsInfoService;
  70. @Autowired
  71. private ProductService productService;
  72. @Autowired
  73. private SupplierProductService supplierProductService;
  74. @Autowired
  75. private PostOrderNumService postOrderNumService;
  76. private static List<LogisticsInfo> LOGISTICSINFO_LIST;
  77. /**
  78. * 查询客户基本信息列表
  79. *
  80. * @return
  81. * @author
  82. * @date
  83. */
  84. @RequiresPermissions("dm:dealer:list")
  85. @RequestMapping("/list_page_dealer")
  86. public ModelAndView listCustomerBasic(HttpServletRequest request, DmDealer dmDealer,
  87. @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
  88. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  89. @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) {
  90. ModelAndView mv = new ModelAndView("dm/dealer/dealer_list");
  91. Admin admin = AdminUtils.getLoginAdmin();
  92. if(admin.getAdminDept() != 1){
  93. //获取登录员工id
  94. Integer adminId = AdminUtils.getLoginAdminId();
  95. dmDealer.setCreateId(adminId);
  96. }
  97. // 封装请求数据
  98. PageRequest<DmDealer> pageRequest = new PageRequest<>(dmDealer, pageNO, pageSize, totalNum == 0);
  99. // 查询订单列表
  100. PagedResult<DmDealer> result = dmDealerService.listDmDealerPage(pageRequest);
  101. if (totalNum != 0) {
  102. result.setTotal(totalNum);
  103. }
  104. StitchAttrUtil.getSa()
  105. .addDatePro("yyyy-MM-dd HH:mm:ss","startDate","endDate")
  106. .addNoPro("dealerContactList","dealerChannelList","dealerProductList","cooperationAgreeList")
  107. .setModelAndView(dmDealer, mv, "/admin/dealer/list_page_dealer", result);
  108. mv.addObject("admin",admin);
  109. return mv;
  110. }
  111. /**
  112. * 添加客户页面
  113. * @return
  114. * @author
  115. * @date
  116. */
  117. @RequiresPermissions("dm:dealer:add")
  118. @RequestMapping("/to_add_dealer")
  119. public ModelAndView toAddDealer(HttpServletRequest request) {
  120. ModelAndView mv = new ModelAndView("dm/dealer/add_dealer");
  121. return mv;
  122. }
  123. /**
  124. * 添加客户页面- 添加对接人
  125. * @return
  126. * @author
  127. * @date
  128. */
  129. @RequiresPermissions(value={"dm:dealer:add","dm:dealer:update"},logical= Logical.OR)
  130. @RequestMapping("/to_add_dealer_contact")
  131. public ModelAndView toAddDealerContact(HttpServletRequest request,DealerContact dc) {
  132. ModelAndView mv = new ModelAndView("dm/dealer/add_dealer_contact");
  133. mv.addObject("dealerContact",dc);
  134. return mv;
  135. }
  136. /**
  137. * 添加客户页面- 添加渠道商
  138. * @return
  139. * @author
  140. * @date
  141. */
  142. @RequiresPermissions(value={"dm:dealer:add","dm:dealer:update"},logical= Logical.OR)
  143. @RequestMapping("/to_add_dealer_channel")
  144. public ModelAndView toAddDealerChannel(HttpServletRequest request,DealerChannel dealerChannel,Integer dealerId) {
  145. ModelAndView mv = new ModelAndView("dm/dealer/add_dealer_channel");
  146. mv.addObject("dealerChannel",dealerChannel);
  147. StoreInfo storeInfo = new StoreInfo();
  148. storeInfo.setStoreStatus(1);
  149. List<StoreInfo> storeInfoList = storeInfoService.getNoSelect(storeInfo,dealerId);
  150. mv.addObject("storeInfoList",storeInfoList);
  151. List<DealerChannelStore> dealerChannelStoreList = new ArrayList<DealerChannelStore>();
  152. String[] nameStr = new String[0];
  153. if(dealerChannel.getStoreIdStr() != null && !"".equals(dealerChannel.getStoreIdStr() )){
  154. nameStr = dealerChannel.getStoreIdStr().split(",");
  155. }
  156. for (String str : nameStr){
  157. DealerChannelStore dealerChannelStore = new DealerChannelStore();
  158. for (StoreInfo si : storeInfoList) {
  159. if(Objects.equals(si.getStoreId(), Integer.valueOf(str))){
  160. dealerChannelStore.setStoreName(si.getStoreName());
  161. }
  162. }
  163. dealerChannelStore.setStoreId(Integer.valueOf(str));
  164. dealerChannelStoreList.add(dealerChannelStore);
  165. }
  166. mv.addObject("dealerChannelStoreList",dealerChannelStoreList);
  167. return mv;
  168. }
  169. /**
  170. * 添加客户页面- 添加产品
  171. * @return
  172. * @author
  173. * @date
  174. */
  175. @RequiresPermissions(value={"dm:dealer:add","dm:dealer:update"},logical= Logical.OR)
  176. @RequestMapping("/to_add_dealer_product")
  177. public ModelAndView toAddDealerProduct(HttpServletRequest request,DealerProduct dealerProduct,String dealerProductStoreJson) {
  178. ModelAndView mv = new ModelAndView("dm/dealer/add_dealer_product");
  179. mv.addObject("dealerProduct",dealerProduct);
  180. JSONArray jsonArray = JSONArray.fromObject(dealerProductStoreJson);
  181. List<DealerProductStore> dealerProductStoreList = (List) JSONArray.toCollection(jsonArray, DealerProductStore.class);
  182. mv.addObject("dealerProductStoreList",dealerProductStoreList);
  183. return mv;
  184. }
  185. /**
  186. * 添加客户页面- 添加合作协议
  187. * @return
  188. * @author
  189. * @date
  190. */
  191. @RequiresPermissions(value={"dm:dealer:add","dm:dealer:update"},logical= Logical.OR)
  192. @RequestMapping("/to_add_coop_agree")
  193. public ModelAndView toAddCoopAgree(HttpServletRequest request,CooperationAgree cooperationAgree) {
  194. ModelAndView mv = new ModelAndView("dm/dealer/add_coop_agree");
  195. try {
  196. if(cooperationAgree.getCoopAgreeImg() != null && !"".equals(cooperationAgree.getCoopAgreeImg())){
  197. cooperationAgree.setCoopAgreeImg(URLDecoder.decode(cooperationAgree.getCoopAgreeImg(),"UTF-8"));
  198. }
  199. } catch (UnsupportedEncodingException e) {
  200. e.printStackTrace();
  201. }
  202. mv.addObject("cooperationAgree",cooperationAgree);
  203. return mv;
  204. }
  205. /**
  206. * 图片
  207. * @RequestParam("file") 将name=file控件得到的文件封装成CommonsMultipartFile 对象
  208. */
  209. @ResponseBody
  210. @RequiresPermissions(value={"dm:dealer:add","dm:dealer:update"},logical= Logical.OR)
  211. @RequestMapping("/fileUpload")
  212. public ResponseJson fileUpload(HttpServletRequest request, @RequestParam("file") CommonsMultipartFile file) throws IOException {
  213. ResponseJson responseJson = new ResponseJson();
  214. System.out.println("fileName:"+file.getOriginalFilename());
  215. String realPath = request.getSession().getServletContext().getRealPath("/");
  216. if(file.getOriginalFilename() == null || "".equals(file.getOriginalFilename())){
  217. responseJson.setReturnCode(500);
  218. return responseJson;
  219. }
  220. String oldName = file.getOriginalFilename();
  221. //名称
  222. String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().toString().lastIndexOf("."));
  223. String name = System.currentTimeMillis()+suffix;
  224. String path = UploadFileUtils.coopeAgreeImgUploadFile(realPath,name,file);
  225. String url = request.getScheme()+"://"+ request.getServerName();
  226. responseJson.setReturnCode(200);
  227. responseJson.addResponseKeyValue("allImgUrl",url + "/" + path);
  228. responseJson.addResponseKeyValue("imgUrl",path);
  229. responseJson.addResponseKeyValue("oldName",oldName);
  230. responseJson.addResponseKeyValue("name",name);
  231. return responseJson;
  232. }
  233. /**
  234. * 添加 客户信息
  235. * @param request
  236. * @return
  237. */
  238. @ResponseBody
  239. @RequiresPermissions("dm:dealer:add")
  240. @RequestMapping("/dealere_save")
  241. public ResponseJson dealereSave(HttpServletRequest request,DmDealer dmDealer,
  242. String add_contact_json,String add_dealer_channel_json,String add_product_json,String add_coop_agree_json) {
  243. ResponseJson rj = ResponseJson.getSUCCESS();
  244. if(add_contact_json != null && !"".equals(add_contact_json)){
  245. JSONArray jsonArray = JSONArray.fromObject(add_contact_json);
  246. List<DealerContact> dealerContactList = (List) JSONArray.toCollection(jsonArray, DealerContact.class);
  247. dmDealer.setDealerContactList(dealerContactList);
  248. }
  249. if(add_dealer_channel_json != null && !"".equals(add_dealer_channel_json)){
  250. JSONArray jsonArray = JSONArray.fromObject(add_dealer_channel_json);
  251. List<DealerChannel> dealerChannelList = (List) JSONArray.toCollection(jsonArray, DealerChannel.class);
  252. dmDealer.setDealerChannelList(dealerChannelList);
  253. }
  254. if(add_product_json != null && !"".equals(add_product_json)){
  255. JSONArray jsonArray = JSONArray.fromObject(add_product_json);
  256. List<DealerProduct> dealerProductList = (List) JSONArray.toCollection(jsonArray, DealerProduct.class);
  257. dmDealer.setDealerProductList(dealerProductList);
  258. }
  259. if(add_coop_agree_json != null && !"".equals(add_coop_agree_json)){
  260. JSONArray jsonArray = JSONArray.fromObject(add_coop_agree_json);
  261. List<CooperationAgree> cooperationAgreeList = (List) JSONArray.toCollection(jsonArray, CooperationAgree.class);
  262. dmDealer.setCooperationAgreeList(cooperationAgreeList);
  263. }
  264. rj = this.dmDealerCheck(dmDealer);
  265. //设置创建人id
  266. Integer adminId = AdminUtils.getLoginAdminId();
  267. dmDealer.setCreateId(adminId);
  268. dmDealer.setDealerStatus(1);
  269. Integer flag = 0;
  270. try{
  271. flag = dmDealerService.save(dmDealer);
  272. }catch (Exception e){
  273. e.printStackTrace();
  274. rj = ResponseJson.getFAILURE();
  275. rj.setResultMsg("添加客户信息,失败原因:"+e.getMessage());
  276. return rj;
  277. }
  278. if(flag > 0){
  279. rj.setResultMsg("添加成功");
  280. return rj;
  281. }else{
  282. rj = ResponseJson.getFAILURE();
  283. return rj;
  284. }
  285. }
  286. /**
  287. *
  288. * @param dmDealer
  289. * @return
  290. */
  291. private ResponseJson dmDealerCheck(DmDealer dmDealer){
  292. ResponseJson rj = ResponseJson.getFAILURE();
  293. if(dmDealer.getDealerName() == null || "".equals(dmDealer.getDealerName())){
  294. rj.setResultMsg("客户名称不能为空");
  295. return rj;
  296. }
  297. if(dmDealer.getDealerIndustry() == null || "".equals(dmDealer.getDealerIndustry())){
  298. rj.setResultMsg("客户行业不能为空");
  299. return rj;
  300. }
  301. if(dmDealer.getDealerType() == null){
  302. rj.setResultMsg("客户类型不能为空");
  303. return rj;
  304. }
  305. if(dmDealer.getDealerState() == null){
  306. rj.setResultMsg("合作进度不能为空");
  307. return rj;
  308. }
  309. if(dmDealer.getDealerSelfOperated() == null){
  310. rj.setResultMsg("请选择是否自营");
  311. return rj;
  312. }
  313. if(dmDealer.getDealerRate() == null){
  314. rj.setResultMsg("请选择是否自营");
  315. return rj;
  316. }
  317. return ResponseJson.getSUCCESS();
  318. }
  319. /**
  320. * to修改客户页面
  321. * @return
  322. * @author
  323. * @date
  324. */
  325. @RequiresPermissions("dm:dealer:update")
  326. @RequestMapping("/to_update_dealer")
  327. public ModelAndView toUpdateDealer(HttpServletRequest request,Integer dealerId) {
  328. ModelAndView mv = new ModelAndView("dm/dealer/update_dealer");
  329. DmDealer dmDealer = dmDealerService.getDmDealerById(dealerId);
  330. DealerContact dealerContact = new DealerContact();
  331. dealerContact.setDealerId(dealerId);
  332. List<DealerContact> dealerContactList = dealerContactService.getDealerContactList(dealerContact);
  333. DealerChannel dealerChannel = new DealerChannel();
  334. dealerChannel.setDealerId(dealerId);
  335. List<DealerChannel> dealerChannelList = dealerChannelService.getDealerChannelList(dealerChannel);
  336. for (DealerChannel dc:dealerChannelList) {
  337. DealerChannelStore dealerChannelStore = new DealerChannelStore();
  338. dealerChannelStore.setDealChannelId(dc.getDealChannelId());
  339. List<DealerChannelStore> dealerChannelStoreList = dealerChannelStoreService.getDealerChannelStoreList(dealerChannelStore);
  340. dc.setDealerChannelStoreList(dealerChannelStoreList);
  341. //店铺
  342. String storeNameStr="",storeIdStr="";
  343. for (DealerChannelStore dcs: dealerChannelStoreList) {
  344. if("".equals(storeNameStr)){
  345. storeIdStr += dcs.getStoreId();
  346. storeNameStr += dcs.getStoreName();
  347. }else{
  348. storeIdStr += ","+ dcs.getStoreId();
  349. storeNameStr += ","+ dcs.getStoreName();
  350. }
  351. }
  352. dc.setStoreIdStr(storeIdStr);
  353. dc.setStoreNameStr(storeNameStr);
  354. }
  355. DealerProduct dealerProduct = new DealerProduct();
  356. dealerProduct.setDealerId(dealerId);
  357. List<DealerProduct> dealerProductList = dealerProductService.getDealerProductList(dealerProduct);
  358. for (DealerProduct dp:dealerProductList) {
  359. if(dp.getDealProdStoreArea() == 2 ){
  360. DealerProductStore dealerProductStore = new DealerProductStore();
  361. dealerProductStore.setDealProdId(dp.getDealProdId());
  362. List<DealerProductStore> dealerProductStoreList = dealerProductStoreService.getDealerProductStoreList(dealerProductStore);
  363. String dealerProductStoreIds="";
  364. String dealerProductStoreName="";
  365. for (DealerProductStore dps:dealerProductStoreList) {
  366. if("".equals(dealerProductStoreIds)){
  367. dealerProductStoreIds = String.valueOf(dps.getDealChannelId());
  368. dealerProductStoreName = dps.getDealChannelName();
  369. }else{
  370. dealerProductStoreIds += "," + String.valueOf(dps.getDealChannelId());
  371. dealerProductStoreName += "," + dps.getDealChannelName();
  372. }
  373. }
  374. dp.setDealerProductStoreIds(dealerProductStoreIds);
  375. dp.setDealerProductStoreName(dealerProductStoreName);
  376. }
  377. }
  378. CooperationAgree cooperationAgree = new CooperationAgree();
  379. cooperationAgree.setDealerId(dealerId);
  380. List<CooperationAgree> cooperationAgreeList = cooperationAgreeService.getCooperationAgreeList(cooperationAgree);
  381. mv.addObject("dmDealer",dmDealer);
  382. mv.addObject("dealerContactList",dealerContactList);
  383. mv.addObject("dealerChannelList",dealerChannelList);
  384. mv.addObject("dealerProductList",dealerProductList);
  385. mv.addObject("cooperationAgreeList",cooperationAgreeList);
  386. return mv;
  387. }
  388. /**
  389. * 修改客户信息
  390. * @param request
  391. * @return
  392. */
  393. @ResponseBody
  394. @RequiresPermissions("dm:dealer:update")
  395. @RequestMapping("/dealere_update")
  396. public ResponseJson dealereUpdate(HttpServletRequest request,DmDealer dmDealer,
  397. String add_contact_json,String add_dealer_channel_json,String add_product_json,String add_coop_agree_json) {
  398. ResponseJson rj = ResponseJson.getSUCCESS();
  399. if(add_contact_json != null && !"".equals(add_contact_json)){
  400. JSONArray jsonArray = JSONArray.fromObject(add_contact_json);
  401. List<DealerContact> dealerContactList = (List) JSONArray.toCollection(jsonArray, DealerContact.class);
  402. dmDealer.setDealerContactList(dealerContactList);
  403. }
  404. if(add_dealer_channel_json != null && !"".equals(add_dealer_channel_json)){
  405. JSONArray jsonArray = JSONArray.fromObject(add_dealer_channel_json);
  406. List<DealerChannel> dealerChannelList = (List) JSONArray.toCollection(jsonArray, DealerChannel.class);
  407. dmDealer.setDealerChannelList(dealerChannelList);
  408. }
  409. if(add_product_json != null && !"".equals(add_product_json)){
  410. JSONArray jsonArray = JSONArray.fromObject(add_product_json);
  411. List<DealerProduct> dealerProductList = (List) JSONArray.toCollection(jsonArray, DealerProduct.class);
  412. dmDealer.setDealerProductList(dealerProductList);
  413. }
  414. if(add_coop_agree_json != null && !"".equals(add_coop_agree_json)){
  415. String[] dateFormats = new String[] {"yyyy-MM-dd"};
  416. JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));
  417. JSONArray jsonArray = JSONArray.fromObject(add_coop_agree_json);
  418. List<CooperationAgree> cooperationAgreeList = (List) JSONArray.toCollection(jsonArray, CooperationAgree.class);
  419. dmDealer.setCooperationAgreeList(cooperationAgreeList);
  420. }
  421. rj = this.dmDealerCheck(dmDealer);
  422. //设置创建人id
  423. Integer adminId = AdminUtils.getLoginAdminId();
  424. dmDealer.setCreateId(adminId);
  425. dmDealer.setDealerStatus(1);
  426. Integer flag = 0;
  427. try{
  428. flag = dmDealerService.update(dmDealer);
  429. }catch (Exception e){
  430. e.printStackTrace();
  431. rj = ResponseJson.getFAILURE();
  432. rj.setResultMsg("修改客户信息,失败原因:"+e.getMessage());
  433. return rj;
  434. }
  435. if(flag > 0){
  436. rj.setResultMsg("修改成功");
  437. return rj;
  438. }else{
  439. rj = ResponseJson.getFAILURE();
  440. return rj;
  441. }
  442. }
  443. /**
  444. * 修改
  445. * @param request
  446. * @return
  447. */
  448. @ResponseBody
  449. @RequiresPermissions("dm:dealer:update")
  450. @RequestMapping("/update_dealer_status")
  451. public ResponseJson dealereSave(HttpServletRequest request,DmDealer dmDealer) {
  452. ResponseJson rj = ResponseJson.getSUCCESS();
  453. Integer flag = 0;
  454. flag = dmDealerService.updateDmDealer(dmDealer);
  455. if(flag > 0){
  456. rj.setResultMsg("添加成功");
  457. return rj;
  458. }else{
  459. rj = ResponseJson.getFAILURE();
  460. return rj;
  461. }
  462. }
  463. /**
  464. * 删除
  465. * @param request
  466. * @return
  467. */
  468. @ResponseBody
  469. @RequiresPermissions("dm:dealer:delete")
  470. @RequestMapping("/delete_dealer")
  471. public ResponseJson deleteDealer(HttpServletRequest request,Integer dealerId) {
  472. ResponseJson rj = ResponseJson.getSUCCESS();
  473. Admin admin = AdminUtils.getLoginAdmin();
  474. if(admin.getAdminDept() != 1){
  475. rj.setResultMsg("对不起,你没有权限!");
  476. return rj;
  477. }
  478. Integer flag = 0;
  479. flag = dmDealerService.deleteDealer(dealerId);
  480. if(flag > 0){
  481. rj.setResultMsg("删除成功");
  482. return rj;
  483. }else{
  484. rj = ResponseJson.getFAILURE();
  485. return rj;
  486. }
  487. }
  488. /**
  489. * 分页查询订单列表信息
  490. * @param request
  491. * @param salesOrder
  492. * @param pageSize
  493. * @param pageNO
  494. * @param totalNum
  495. * @return
  496. * @throws Exception
  497. */
  498. @RequiresPermissions("dm:order_statistic:list")
  499. @RequestMapping("/list_order_for_dm")
  500. public ModelAndView listOrderForDm(HttpServletRequest request, SalesOrder salesOrder,
  501. @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
  502. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  503. @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) throws Exception {
  504. ModelAndView mv = new ModelAndView("dm/dealer/dm_order_statistics");
  505. salesOrder.setIsCustmerAddOrder(2);
  506. salesOrder.setIsSelectCustomer(2);
  507. //分页获取订单信息
  508. PagedResult<SalesOrder> pagedResult = salesOrderService.salesOrderListAndItemPage(pageNO, pageSize, salesOrder,totalNum == 0);
  509. if (totalNum != 0) {
  510. pagedResult.setTotal(totalNum);
  511. }
  512. List<StoreInfo> listStoreInfo = storeInfoService.listStore(new StoreInfo());
  513. List<LogisticsInfo> logisticsInfoList = logisticsInfoService.getLogisticsInfoList(new LogisticsInfo());
  514. List<ProductColor> productColorList = productService.listproductAndColor(new ProductColor());
  515. List<OrderWarehouse> listOrderWarehouse = salesOrderService.listOrderWarehouse();
  516. List<DmDealer> dmDealerList = dmDealerService.getDmDealerList(new DmDealer());
  517. Admin admin = new Admin();
  518. admin.setAdminDept(2);
  519. admin.setAdminStatus(1);
  520. List<Admin> adminList = sysService.listSelectAdmin(admin);
  521. StitchAttrUtil.getSa()
  522. .addDatePro("yyyy-MM-dd HH:mm:ss","startDate","endDate")
  523. .addNoPro("salesOrderItemList","complaintDetectInfoList")
  524. .setModelAndView(salesOrder, mv, "/admin/dealer/list_order_for_dm", pagedResult);
  525. mv.addObject("listOrderWarehouse",listOrderWarehouse);
  526. mv.addObject("listStoreInfo",listStoreInfo);
  527. mv.addObject("logisticsInfoList",logisticsInfoList);
  528. mv.addObject("productColorList",productColorList);
  529. mv.addObject("dmDealerList",dmDealerList);
  530. mv.addObject("adminList",adminList);
  531. return mv;
  532. }
  533. /**
  534. *
  535. * @param request
  536. * @return
  537. */
  538. // @ResponseBody
  539. // @RequestMapping("/order_update")
  540. // public ResponseJson order_update(HttpServletRequest request) {
  541. // StringBuffer sbf = new StringBuffer();
  542. //
  543. // ResponseJson rj = ResponseJson.getSUCCESS();
  544. // Integer flag = 0;
  545. //
  546. // SalesOrder salesOrder = new SalesOrder();
  547. // Calendar calendar = Calendar.getInstance();
  548. // calendar.set(2019,6,01,00,00,00);
  549. // salesOrder.setStartDate(calendar.getTime()); //startDate
  550. //
  551. // Calendar endCalendar = Calendar.getInstance();
  552. // endCalendar.set(2019,7,01,00,00,00);
  553. // salesOrder.setEndDate(endCalendar.getTime());
  554. //
  555. // salesOrder.setSalesStatus(1);
  556. // List<SalesOrder> salesOrderList = salesOrderService.salesOrderListAndItem(salesOrder);
  557. //
  558. // System.out.println("总共"+salesOrderList.size()+"单");
  559. // sbf.append("总共"+salesOrderList.size()+"单");
  560. // int i=0;
  561. //
  562. // for (SalesOrder so : salesOrderList) {//201909090002
  563. // System.out.println("当前"+i+"单"+so.getSalesDealCode());
  564. // sbf.append("当前"+i+"单"+so.getSalesDealCode()+"\n\r");
  565. // i++;
  566. // SalesOrder newSo = new SalesOrder();
  567. //
  568. // if(so.getSalesStatus() != 1){
  569. // continue;
  570. // }
  571. //
  572. // if("KS00000000000001".equals(so.getSalesBatchId())){
  573. // continue;
  574. // }
  575. //
  576. // if(so.getSalesCustomerId() != null){
  577. // continue;
  578. // }
  579. //
  580. // if(so.getSalesPayMoney() == null || so.getSalesPayMoney() == 0 || so.getSalesPayMoney() == 2147483647){
  581. // Integer price = 0;
  582. // StoreInfo storeInfo = storeInfoService.getStoreInfoById(so.getSalesStoreId());
  583. // DealerChannel dealerChannel = new DealerChannel();
  584. // dealerChannel.setStoreId(so.getSalesStoreId());
  585. // List<DealerChannel> dealerChannelList = dealerChannelService.getDealerChannelList(dealerChannel);
  586. // if(dealerChannelList!= null && dealerChannelList.size() > 0){
  587. // dealerChannel = dealerChannelList.get(0);
  588. // }else{
  589. // System.out.println("未查询到客户信息!订单id:"+so.getSalesId()+"店铺信息:"+storeInfo.getStoreName());
  590. // sbf.append("未查询到客户信息!订单id:"+so.getSalesId()+"店铺信息:"+storeInfo.getStoreName()+"\n\r");
  591. // continue;
  592. // }
  593. // for (SalesOrderItem salesOrderItem:so.getSalesOrderItemList()) {
  594. // SalesOrderItem newSoi = new SalesOrderItem();
  595. // newSoi.setItemNum(salesOrderItem.getItemNum());
  596. // newSoi.setItemId(salesOrderItem.getItemId());
  597. //
  598. // boolean isUpdateItem = false;
  599. // if(salesOrderItem.getItemCostTotal() == null ||salesOrderItem.getItemCostTotal() == 0){
  600. // SupplierProduct supplierProduct = supplierProductService.getSupplierProductByColorId(salesOrderItem.getItemColorId());
  601. // if(supplierProduct != null){
  602. // newSoi.setItemCost(supplierProduct.getSpCost());
  603. // newSoi.setItemCostTotal(supplierProduct.getSpCost() * newSoi.getItemNum());
  604. // isUpdateItem = true;
  605. // }else{
  606. // System.out.println("未查询到该产品的成本("+ salesOrderItem.getItemProductName() +"-"+ salesOrderItem.getItemProductColor() +")"+ salesOrderItem.getItemColorBar() +"的成本价格订单id:"+so.getSalesId());
  607. // sbf.append("未查询到该产品的成本("+ salesOrderItem.getItemProductName() +"-"+ salesOrderItem.getItemProductColor() +")的成本价格订单id:"+so.getSalesId()+"\n\r");
  608. // System.out.println("=============="+sbf+"==============");
  609. // return rj;
  610. // }
  611. // }
  612. // if(salesOrderItem.getItemTotal() == null || salesOrderItem.getItemTotal() == 0|| salesOrderItem.getItemTotal() == 2147483647){
  613. // DealerProduct dealerProduct = new DealerProduct();
  614. // dealerProduct.setDealerId(dealerChannel.getDealerId());
  615. // dealerProduct.setColorBar(salesOrderItem.getItemColorBar());
  616. // List<DealerProduct> dealerProductList = dealerProductService.getDealerProductAndStoreList(dealerProduct);
  617. // if(dealerProductList.size() > 0){
  618. // dealerProduct = dealerProductList.get(0);
  619. // if(1 == dealerProduct.getDealProdStoreArea()){
  620. // // 1:全部店铺
  621. // newSoi.setItemProductDiscount(dealerProduct.getDealProdPrice());
  622. // newSoi.setItemProductPrice(dealerProduct.getDealProdPrice());
  623. // }else{
  624. // // 2:部分店铺
  625. // for (DealerProductStore dps:dealerProduct.getDealerProductStoreList()) {
  626. // if(dealerChannel.getDealChannelId().equals(dps.getDealChannelId())){
  627. // newSoi.setItemProductDiscount(dealerProduct.getDealProdPrice());
  628. // newSoi.setItemProductPrice(dealerProduct.getDealProdPrice());
  629. // }
  630. // }
  631. // }
  632. // newSoi.setItemTotal(newSoi.getItemProductDiscount()*newSoi.getItemNum());
  633. // isUpdateItem = true;
  634. // price += newSoi.getItemTotal();
  635. // }else{
  636. // System.out.println("=====客户未查询到该产品,店铺名称:"+ storeInfo.getStoreName() +"===("+ salesOrderItem.getItemProductName()+salesOrderItem.getItemProductColor() + "==="+dealerChannel.getDealerId() +"==="+so.getSalesId());
  637. // sbf.append("=====客户未查询到该产品,店铺名称:"+ storeInfo.getStoreName() +"===("+ salesOrderItem.getItemProductName() +"-"+ salesOrderItem.getItemProductColor() +")的价格订单id:"+so.getSalesId()+"==="+ so.getSalesDealCode() +"\n\r");
  638. // System.out.println("=============="+sbf+"==============");
  639. // return rj;
  640. // }
  641. // }else{
  642. // price += salesOrderItem.getItemTotal();
  643. // }
  644. // if(isUpdateItem){
  645. // flag = salesOrderService.updateOrderItemObj(newSoi);
  646. // if(flag < 1){
  647. // System.out.println("修改订单项失败!订单id:"+so.getSalesId());
  648. // return rj;
  649. // }
  650. // }
  651. // }
  652. // newSo.setSalesId(so.getSalesId()); //salesId
  653. // newSo.setSalesAmount(price);
  654. // newSo.setSalesPayMoney(price);
  655. // flag = salesOrderMapper.updateSalesOrder(newSo);
  656. // if(flag < 1){
  657. // System.out.println("修改订单失败!订单id:"+so.getSalesId());
  658. // return rj;
  659. // }
  660. // }
  661. // }
  662. //
  663. // sbf.append("完成");
  664. // System.out.println(sbf.toString());
  665. // if(flag > 0){
  666. // rj.setResultMsg("完成");
  667. // return rj;
  668. // }else{
  669. // rj = ResponseJson.getFAILURE();
  670. // return rj;
  671. // }
  672. // }
  673. /**
  674. * 下载订单,返回给各个平台
  675. * @param request
  676. * @return
  677. * @throws IOException
  678. */
  679. @ResponseBody
  680. @RequestMapping("/dm_download_order_val")
  681. @RequiresPermissions("dm:order_statistic:list")
  682. public ResponseJson dmDownloadOrderVal(HttpServletRequest request,SalesOrder so) throws Exception {
  683. ResponseJson rj = ResponseJson.getFAILURE();
  684. so.setIsCustmerAddOrder(2);
  685. so.setIsSelectCustomer(2);
  686. Integer num = postOrderNumService.listSalesOrderAndItemNum(so);
  687. if(num > 20000){
  688. rj.setResultMsg("下载订单超过20000条,请精确查询条件");
  689. return rj;
  690. }
  691. return ResponseJson.getSUCCESS();
  692. }
  693. /**
  694. * 下载订单,返回给各个平台
  695. * @param request
  696. * @return
  697. * @throws IOException
  698. */
  699. @RequestMapping("/dm_download_order")
  700. @RequiresPermissions("dm:order_statistic:list")
  701. public ModelAndView dmDownloadOrder(HttpServletRequest request,SalesOrder so) throws Exception {
  702. so.setIsCustmerAddOrder(2);
  703. so.setIsSelectCustomer(2);
  704. List<SalesOrder> temporarySalesOrderList = postOrderNumService.listSalesOrderAndItem(so);
  705. if(temporarySalesOrderList.size() > 20000){
  706. return new ModelAndView().addObject("下载出错,下载数量过大");
  707. }
  708. // 准备model
  709. Map<String, Object> model = new HashMap<String, Object>();
  710. model.put("fileName", "订单列表"); // 下载文件名称
  711. // 标题
  712. List<String> titles = new ArrayList<String>();
  713. titles.add("订单创建日期");
  714. titles.add("订单编号");
  715. titles.add("交易号");
  716. titles.add("订单类型");
  717. titles.add("客户名称");
  718. titles.add("渠道名称");
  719. titles.add("店铺名称");
  720. titles.add("是否认领");
  721. titles.add("姓名");
  722. titles.add("电话");
  723. titles.add("收货人地址");
  724. titles.add("快递公司");
  725. titles.add("快递单号");
  726. titles.add("商品名称");
  727. titles.add("商品颜色");
  728. titles.add("商品数量");
  729. titles.add("商品小结");
  730. /*titles.add("成本小结");*/
  731. titles.add("打单状态");
  732. titles.add("打单日期");
  733. titles.add("备注");
  734. model.put("titles", titles);
  735. PtsBatch ptsBatch = new PtsBatch();
  736. List<List<Object>> countexts = new ArrayList<List<Object>>();
  737. if(temporarySalesOrderList != null && temporarySalesOrderList.size() >0){
  738. for (SalesOrder salesOrder : temporarySalesOrderList) {
  739. List<Object> row = new ArrayList<Object>();
  740. SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
  741. row.add(salesOrder.getSalesCreateTime() == null ? null:formatter.format(salesOrder.getSalesCreateTime()));
  742. row.add(salesOrder.getSalesOrderId() == null ? null:salesOrder.getSalesOrderId());
  743. row.add(salesOrder.getSalesDealCode() == null ? null:salesOrder.getSalesDealCode());
  744. if(salesOrder.getSalesCustomerId() == null){
  745. row.add("正常订单");
  746. }else{
  747. String typeName = salesOrder.getProcTypeName() == null ? "":salesOrder.getProcTypeName();
  748. row.add("售后订单("+ typeName +")");
  749. }
  750. row.add(salesOrder.getDealerName() == null ? null:salesOrder.getDealerName());
  751. row.add(salesOrder.getDealChannelName() == null ? null:salesOrder.getDealChannelName());
  752. row.add(salesOrder.getStoreName() == null ? null:salesOrder.getStoreName());
  753. if(salesOrder.getOrderIscostTotal() == 0){ //orderIscostTotal
  754. row.add("未认领");
  755. }else{
  756. row.add("已认领");
  757. }
  758. row.add(salesOrder.getSalesAddressName() == null ? null:salesOrder.getSalesAddressName());
  759. row.add(salesOrder.getSalesAddressTel() == null ? null:salesOrder.getSalesAddressTel());
  760. row.add(salesOrder.getSalesAddressInfo() == null ? null:salesOrder.getSalesAddressInfo());
  761. String frim = replace(salesOrder.getSalesPostFirm());
  762. row.add(frim);
  763. row.add(salesOrder.getSalesPostNum() == null ? null:salesOrder.getSalesPostNum());
  764. row.add(salesOrder.getItemProductName() == null ? null:salesOrder.getItemProductName()+(salesOrder.getItemProductColor() == null ? null:"-"+salesOrder.getItemProductColor()));
  765. row.add(salesOrder.getItemProductColor() == null ? null:salesOrder.getItemProductColor());
  766. row.add(salesOrder.getItemNum() == null ? null:salesOrder.getItemNum());
  767. if(salesOrder.getItemTotal() == null){
  768. row.add(0);
  769. }else{
  770. Double itemTotal = Double.valueOf(salesOrder.getItemTotal());
  771. itemTotal = itemTotal/100;
  772. row.add(itemTotal);
  773. }
  774. /*if(salesOrder.getItemCostTotal() == null){
  775. row.add(0);
  776. }else{
  777. Double itemCostTotal = Double.valueOf(salesOrder.getItemCostTotal());
  778. itemCostTotal = itemCostTotal/100;
  779. row.add(itemCostTotal);
  780. }*/
  781. String salesShoppingStatus = "";
  782. if(salesOrder.getSalesShippingStatus() == null){
  783. salesShoppingStatus = "未打单";
  784. }else{
  785. // 0(未发货)1(已发货,即已扫描出库)3(备货中)4(收货) 11(已通知配货,后加)
  786. switch (salesOrder.getSalesShippingStatus()){
  787. case 0:
  788. salesShoppingStatus = "未打单";
  789. break;
  790. case 1:
  791. salesShoppingStatus = "已打单";
  792. break;
  793. case 11:
  794. salesShoppingStatus = "通知配货";
  795. break;
  796. default:
  797. salesShoppingStatus = "其他状态";
  798. break;
  799. }
  800. }
  801. row.add(salesShoppingStatus);
  802. row.add(salesOrder.getSalesSendTime() == null ? "未发货":formatter.format(salesOrder.getSalesSendTime()));
  803. StringBuffer sbf = new StringBuffer();
  804. if(salesOrder.getSalesAdminRemark() != null && !"".equals(salesOrder.getSalesAdminRemark())){
  805. sbf.append(salesOrder.getSalesAdminRemark()+"/");
  806. }
  807. if(salesOrder.getSalesUserRemark() != null){
  808. sbf.append(salesOrder.getSalesUserRemark());
  809. }
  810. row.add(sbf);
  811. countexts.add(row);
  812. }
  813. }
  814. model.put("varList", countexts);
  815. ObjectExcelView erv = new ObjectExcelView();
  816. ModelAndView mv = new ModelAndView(erv,model);
  817. return mv;
  818. }
  819. /**物流名称替换**/
  820. public String replace(String code) {
  821. String name = "";
  822. if(code == null || "".equals(code)){
  823. return "";
  824. }
  825. if(LOGISTICSINFO_LIST == null){
  826. LOGISTICSINFO_LIST = logisticsInfoService.getLogisticsInfoList(new LogisticsInfo());
  827. }
  828. for (LogisticsInfo logistics : LOGISTICSINFO_LIST) {
  829. if(code .equalsIgnoreCase(logistics.getLogisticsRstCode())){
  830. return logistics.getLogisticsName();
  831. }
  832. }
  833. return "";
  834. }
  835. }