MkDistHierController.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. package com.kmall.admin.controller.mk;
  2. import java.math.BigDecimal;
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import com.google.common.collect.ImmutableBiMap;
  8. import com.kmall.admin.dto.ExpendDistDto;
  9. import com.kmall.admin.entity.mk.MkDistEntity;
  10. import com.kmall.admin.entity.mk.MkDistHierEntity;
  11. import com.kmall.admin.entity.mk.MkDistHierLvlEntity;
  12. import com.kmall.admin.entity.mk.MkDistSellAllocationEntity;
  13. import com.kmall.admin.fromcomm.entity.SysUserEntity;
  14. import com.kmall.admin.service.mk.MkDistHierService;
  15. import com.kmall.admin.service.mk.MkDistSellAllocationService;
  16. import com.kmall.admin.service.mk.MkDistService;
  17. import com.kmall.admin.utils.ParamUtils;
  18. import com.kmall.admin.utils.ShiroUtils;
  19. import com.kmall.common.utils.*;
  20. import io.swagger.models.auth.In;
  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.*;
  25. /**
  26. * 分销层级,树状层级,每个子级只有唯一一个父级,一个父级可以多个子级Controller
  27. *
  28. * @author emato
  29. * @email admin@qhdswl.com
  30. * @date 2019-04-09 18:04:46
  31. */
  32. @Controller
  33. @RequestMapping("mkdisthier")
  34. public class MkDistHierController {
  35. @Autowired
  36. private MkDistHierService mkDistHierService;
  37. @Autowired
  38. private MkDistService mkDistService;
  39. @Autowired
  40. private MkDistSellAllocationService mkDistSellAllocationService;
  41. /**
  42. * 查看列表
  43. */
  44. @RequestMapping("/list")
  45. @RequiresPermissions("mkdisthier:list")
  46. @ResponseBody
  47. public R list(@RequestParam Map<String, Object> params) {
  48. ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
  49. String distHierName = (String) params.get("distHierName");
  50. if(org.apache.commons.lang3.StringUtils.isNotEmpty(distHierName)){
  51. try{
  52. distHierName = new String(distHierName.getBytes("iso-8859-1"),"utf-8");
  53. }catch (Exception e){
  54. e.printStackTrace();
  55. }
  56. params.put("distHierName", distHierName);
  57. }
  58. //查询列表数据
  59. Query query = new Query(params);
  60. List<MkDistHierEntity> mkDistHierList = mkDistHierService.queryList(query);
  61. int total = mkDistHierService.queryTotal(query);
  62. PageUtils pageUtil = new PageUtils(mkDistHierList, total, query.getLimit(), query.getPage());
  63. return R.ok().put("page", pageUtil);
  64. }
  65. /**
  66. * 查看信息
  67. */
  68. @RequestMapping("/info/{distHierId}")
  69. @RequiresPermissions("mkdisthier:info")
  70. @ResponseBody
  71. public R info(@PathVariable("distHierId") Integer distHierId) {
  72. MkDistHierEntity mkDistHier = mkDistHierService.queryObject(distHierId);
  73. return R.ok().put("mkDistHier", mkDistHier);
  74. }
  75. /**
  76. * 保存
  77. */
  78. @RequestMapping("/save")
  79. @RequiresPermissions("mkdisthier:save")
  80. @ResponseBody
  81. public R save(@RequestBody MkDistHierEntity mkDistHier) {
  82. Map<String, Object> valideDate = MapBeanUtil.fromObject(mkDistHier);
  83. ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
  84. builder.put("distChnlId", "分销渠道id");
  85. builder.put("pdistId", "上级分销商id");
  86. builder.put("distId", "分销商id");
  87. builder.put("hierLvl", "层级级别");
  88. builder.put("distHierName", "分销商层级名称");
  89. builder.put("supplierId", "所属供货商");
  90. R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
  91. if (Integer.valueOf(r.get("code").toString()) != 0) {
  92. throw new RRException(r.get("msg").toString());
  93. }
  94. mkDistHierService.save(mkDistHier);
  95. return R.ok();
  96. }
  97. /**
  98. * 修改
  99. */
  100. @RequestMapping("/update")
  101. @RequiresPermissions("mkdisthier:update")
  102. @ResponseBody
  103. public R update(@RequestBody MkDistHierEntity mkDistHier) {
  104. Map<String, Object> valideDate = MapBeanUtil.fromObject(mkDistHier);
  105. ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
  106. builder.put("distChnlId", "分销渠道id");
  107. builder.put("pdistId", "上级分销商id");
  108. builder.put("distId", "分销商id");
  109. builder.put("hierLvl", "层级级别");
  110. builder.put("distHierName", "分销商层级名称");
  111. builder.put("supplierId", "所属供货商");
  112. R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
  113. if (Integer.valueOf(r.get("code").toString()) != 0) {
  114. throw new RRException(r.get("msg").toString());
  115. }
  116. mkDistHierService.update(mkDistHier);
  117. return R.ok();
  118. }
  119. /**
  120. * 删除
  121. */
  122. @RequestMapping("/delete")
  123. @RequiresPermissions("mkdisthier:delete")
  124. @ResponseBody
  125. public R delete(@RequestBody Integer[]distHierIds) {
  126. mkDistHierService.deleteBatch(distHierIds);
  127. return R.ok();
  128. }
  129. /**
  130. * 查看所有列表
  131. */
  132. @RequestMapping("/queryAll")
  133. @ResponseBody
  134. public R queryAll(@RequestParam Map<String, Object> params) {
  135. ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
  136. String distHierName = (String) params.get("distHierName");
  137. if(org.apache.commons.lang3.StringUtils.isNotEmpty(distHierName)){
  138. try{
  139. distHierName = new String(distHierName.getBytes("iso-8859-1"),"utf-8");
  140. }catch (Exception e){
  141. e.printStackTrace();
  142. }
  143. params.put("distHierName", distHierName);
  144. }
  145. List<MkDistHierEntity> list = mkDistHierService.queryList(params);
  146. for (MkDistHierEntity distHierEntity: list) {
  147. // distHierEntity.setName(distHierEntity.getDistName());
  148. // distHierEntity.setParentName(distHierEntity.getPdDistName());
  149. if(distHierEntity.getHierLvl().equalsIgnoreCase("1")){
  150. distHierEntity.setParentId(0L);
  151. }
  152. }
  153. //添加顶级菜单
  154. // MkDistHierEntity root = new MkDistHierEntity();
  155. // root.setDistHierId(0);
  156. // root.setDistHierName("一级分销");
  157. // root.setPdistId(-1);
  158. // root.setOpen(true);
  159. // list.add(null);
  160. return R.ok().put("list", list);
  161. }
  162. @RequestMapping("/queryAllConfig")
  163. @ResponseBody
  164. public R queryAllConfig(@RequestParam Map<String, Object> params) {
  165. Map configMap = mkDistHierService.querySysConfigByKey();
  166. String value = MapUtils.getString("value", configMap);
  167. List<MkDistHierLvlEntity> lvlEntitieyList = new ArrayList<>();
  168. Integer hierLvl = Integer.parseInt(value);
  169. for (int i=0;i < hierLvl;i++){
  170. MkDistHierLvlEntity mkDistHierLvlEntity = new MkDistHierLvlEntity();
  171. mkDistHierLvlEntity.setHierLvl(String.valueOf(i+1));
  172. mkDistHierLvlEntity.setHierKey(String.valueOf(i+1));
  173. lvlEntitieyList.add(mkDistHierLvlEntity);
  174. }
  175. return R.ok().put("lvlEntitieyList", lvlEntitieyList);
  176. }
  177. /**
  178. * 查看树
  179. */
  180. @RequestMapping("/queryAll/tree")
  181. @ResponseBody
  182. public R queryAllByTree(@RequestParam Map<String, Object> params) {
  183. ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
  184. String distId = (String) params.get("distId");
  185. List<MkDistHierEntity> treeList = new ArrayList<>();
  186. MkDistHierEntity mkDistHierEntity = mkDistHierService.queryObjectByDistMap(params);
  187. if(mkDistHierEntity != null){
  188. String lvl = mkDistHierEntity.getHierLvl();
  189. Integer hierLvl = Integer.parseInt(lvl);
  190. Map<String, Object> distMap = new HashMap<>();
  191. distMap.put("distId", distId);
  192. List<MkDistHierEntity> list = mkDistHierService.queryListByTree(distMap);
  193. treeList.add(list.get(0));
  194. Integer pdistId = 0;
  195. if(list != null && list.size() > 0){
  196. pdistId = list.get(0).getPdistId();
  197. }
  198. for (int i = 0; i< hierLvl-1; i++){
  199. Map<String, Object> lvlMap = new HashMap<>();
  200. lvlMap.put("distId", pdistId);
  201. lvlMap.put("hierLvl", hierLvl-1-i);
  202. List<MkDistHierEntity> lvlList = mkDistHierService.queryListByTree(lvlMap);
  203. treeList.add(lvlList.get(0));
  204. pdistId = lvlList.get(0).getPdistId();
  205. }
  206. }
  207. List<ExpendDistDto> expendDistDtoList = new ArrayList<>();
  208. String goodsId = (String) params.get("goodsId");
  209. Integer storeId = (Integer) params.get("storeId");
  210. Map<String, Object> allocationMap = new HashMap<>();
  211. allocationMap.put("goodsId", goodsId);
  212. allocationMap.put("storeId", storeId);
  213. String expendDistLines = "";
  214. List<MkDistSellAllocationEntity> allocationEntityList = mkDistSellAllocationService.queryAllocationByMap(allocationMap);
  215. if(allocationEntityList.size() == 0){
  216. SysUserEntity user = ShiroUtils.getUserEntity();
  217. Map<String, Object> distHierMap = new HashMap<>();
  218. if(StringUtils.isNotEmpty(user.getMerchSn())) {
  219. distHierMap.put("merchSn", user.getMerchSn());
  220. }
  221. if(StringUtils.isNotEmpty(String.valueOf(storeId))) {
  222. distHierMap.put("storeId", storeId);
  223. }
  224. if(StringUtils.isNotEmpty(user.getThirdPartyMerchCode())) {
  225. distHierMap.put("thirdPartyMerchCode", user.getThirdPartyMerchCode());
  226. }
  227. List<MkDistHierEntity> distHierEntityList = mkDistHierService.queryList(distHierMap);
  228. for (int i=0; i < distHierEntityList.size(); i++) {
  229. MkDistHierEntity distHier = distHierEntityList.get(i);
  230. MkDistEntity mkDistEntity = mkDistService.queryObject(distHier.getDistId());
  231. ExpendDistDto expendDistDto = new ExpendDistDto();
  232. expendDistDto.setExpendDistId(distHier.getDistId());
  233. expendDistDto.setExpendDistName(mkDistEntity.getDistName());
  234. expendDistDto.setExpendDistLvl(distHier.getHierLvl());
  235. expendDistDtoList.add(expendDistDto);
  236. }
  237. }else{
  238. expendDistLines = allocationEntityList.get(0).getExpendDistLines();
  239. String[] lines = null;
  240. if(StringUtils.isNotEmpty(expendDistLines)){
  241. lines = expendDistLines.split(",");
  242. }
  243. for (int i=0; i < treeList.size(); i++) {
  244. MkDistHierEntity distHier = treeList.get(i);
  245. MkDistEntity mkDistEntity = mkDistService.queryObject(distHier.getDistId());
  246. ExpendDistDto expendDistDto = new ExpendDistDto();
  247. expendDistDto.setExpendDistId(distHier.getDistId());
  248. expendDistDto.setExpendDistName(mkDistEntity.getDistName());
  249. expendDistDto.setExpendDistLvl(distHier.getHierLvl());
  250. if(treeList.size() == lines.length){
  251. expendDistDto.setExpendDistLine(BigDecimal.valueOf(Double.parseDouble(lines[i])));
  252. }
  253. expendDistDtoList.add(expendDistDto);
  254. }
  255. }
  256. return R.ok().put("list", expendDistDtoList);
  257. }
  258. @RequestMapping("/queryNextLvlByDistId")
  259. @ResponseBody
  260. public R queryNextLvlByDistId(@RequestParam Map<String, Object> params) {
  261. MkDistHierEntity mkDistHierEntity = mkDistHierService.queryObjectByDistMap(params);
  262. List<MkDistHierLvlEntity> lvlEntitieyList = new ArrayList<>();
  263. if (mkDistHierEntity != null) {
  264. String hierLvl = "";
  265. Integer lvl = Integer.parseInt(mkDistHierEntity.getHierLvl());
  266. hierLvl = String.valueOf(lvl);
  267. MkDistHierLvlEntity lvlEntity = new MkDistHierLvlEntity();
  268. lvlEntity.setHierKey(hierLvl);
  269. lvlEntity.setHierLvl(hierLvl);
  270. lvlEntitieyList.add(lvlEntity);
  271. }
  272. return R.ok().put("lvlEntitieyList", lvlEntitieyList);
  273. }
  274. }