KuaishouItemCollectSamplesServiceImpl.java 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682
  1. package com.ruixuan.isc.service.impl;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.google.gson.Gson;
  5. import com.kuaidi100.sdk.api.Subscribe;
  6. import com.kuaidi100.sdk.contant.ApiInfoConstant;
  7. import com.kuaidi100.sdk.core.IBaseClient;
  8. import com.kuaidi100.sdk.request.SubscribeParam;
  9. import com.kuaidi100.sdk.request.SubscribeParameters;
  10. import com.kuaidi100.sdk.request.SubscribeReq;
  11. import com.ruixuan.common.core.domain.entity.SysUser;
  12. import com.ruixuan.common.utils.Check;
  13. import com.ruixuan.common.utils.DateUtils;
  14. import com.ruixuan.common.utils.PageUtils;
  15. import com.ruixuan.isc.entity.KuaishouItemCollectSampleExpress;
  16. import com.ruixuan.isc.entity.KuaishouItemCollectSampleLog;
  17. import com.ruixuan.isc.entity.KuaishouItemCollectSamples;
  18. import com.ruixuan.isc.mapper.KuaishouItemCollectSamplesMapper;
  19. import com.ruixuan.isc.service.IKuaishouItemCollectSamplesService;
  20. import com.ruixuan.isc.service.IKuaishouPromoterService;
  21. import com.ruixuan.isc.service.ISupplyChainService;
  22. import com.ruixuan.system.service.ISysDeptService;
  23. import com.ruixuan.system.service.ISysUserService;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Service;
  26. import java.math.BigDecimal;
  27. import java.math.RoundingMode;
  28. import java.util.ArrayList;
  29. import java.util.Arrays;
  30. import java.util.Collections;
  31. import java.util.Comparator;
  32. import java.util.Date;
  33. import java.util.HashMap;
  34. import java.util.List;
  35. import java.util.Map;
  36. /**
  37. * 【请填写功能名称】Service业务层处理
  38. *
  39. * @author ruoyi
  40. * @date 2023-02-08
  41. */
  42. @Service
  43. public class KuaishouItemCollectSamplesServiceImpl implements IKuaishouItemCollectSamplesService {
  44. @Autowired
  45. private KuaishouItemCollectSamplesMapper kuaishouItemCollectSamplesMapper;
  46. @Autowired
  47. private ISysUserService userService;
  48. @Autowired
  49. private IKuaishouPromoterService promoterService;
  50. @Autowired
  51. private ISupplyChainService supplyChainService;
  52. @Autowired
  53. private ISysDeptService deptService;
  54. /**
  55. * 查询【请填写功能名称】
  56. *
  57. * @param id 【请填写功能名称】主键
  58. * @return 【请填写功能名称】
  59. */
  60. @Override
  61. public KuaishouItemCollectSamples selectKuaishouItemCollectSamplesById(Long id) {
  62. return kuaishouItemCollectSamplesMapper.selectKuaishouItemCollectSamplesById(id);
  63. }
  64. /**
  65. * 查询【请填写功能名称】列表
  66. *
  67. * @param requestMap 【请填写功能名称】
  68. * @return 【请填写功能名称】
  69. */
  70. @Override
  71. public List<KuaishouItemCollectSamples> selectKuaishouItemCollectSamplesList(Map<String, Object> requestMap) {
  72. List<KuaishouItemCollectSamples> kuaishouItemCollectSamples = kuaishouItemCollectSamplesMapper.selectKuaishouItemCollectSamplesList(requestMap);
  73. Map<Long, JSONObject> dataMap = new HashMap<>();
  74. if (!Check.isNull(kuaishouItemCollectSamples)) {
  75. Map<Long, Long> map = new HashMap<>();
  76. for (KuaishouItemCollectSamples samples : kuaishouItemCollectSamples) {
  77. map.put(samples.getPromoterId(), samples.getPromoterId());
  78. }
  79. List<JSONObject> promoterList = kuaishouItemCollectSamplesMapper.selectPromoterInfo(map);
  80. for (int i = 0; i < promoterList.size(); i++) {
  81. JSONObject jsonObject = promoterList.get(i);
  82. dataMap.put(jsonObject.getLong("promoterId"), jsonObject);
  83. }
  84. }
  85. if (!Check.isNull(kuaishouItemCollectSamples)) {
  86. for (KuaishouItemCollectSamples samples : kuaishouItemCollectSamples) {
  87. Long promoterId = samples.getPromoterId();
  88. JSONObject jsonObject = dataMap.get(promoterId);
  89. if (!Check.isNull(jsonObject)) {
  90. samples.setValidAmount(jsonObject.getLong("validAmount"));
  91. samples.setValidOrderNum(jsonObject.getLong("validOrderNum"));
  92. }
  93. }
  94. }
  95. return kuaishouItemCollectSamples;
  96. }
  97. /**
  98. * 新增【请填写功能名称】
  99. *
  100. * @param kuaishouItemCollectSamples 【请填写功能名称】
  101. * @return 结果
  102. */
  103. @Override
  104. public int insertKuaishouItemCollectSamples(KuaishouItemCollectSamples kuaishouItemCollectSamples) {
  105. kuaishouItemCollectSamples.setCreateTime(DateUtils.getNowDate());
  106. return kuaishouItemCollectSamplesMapper.insertKuaishouItemCollectSamples(kuaishouItemCollectSamples);
  107. }
  108. /**
  109. * 修改【请填写功能名称】
  110. *
  111. * @param kuaishouItemCollectSamples 【请填写功能名称】
  112. * @return 结果
  113. */
  114. @Override
  115. public int updateKuaishouItemCollectSamples(KuaishouItemCollectSamples kuaishouItemCollectSamples) {
  116. kuaishouItemCollectSamples.setUpdateTime(DateUtils.getNowDate());
  117. return kuaishouItemCollectSamplesMapper.updateKuaishouItemCollectSamples(kuaishouItemCollectSamples);
  118. }
  119. /**
  120. * 批量删除【请填写功能名称】
  121. *
  122. * @param ids 需要删除的【请填写功能名称】主键
  123. * @return 结果
  124. */
  125. @Override
  126. public int deleteKuaishouItemCollectSamplesByIds(Long[] ids) {
  127. return kuaishouItemCollectSamplesMapper.deleteKuaishouItemCollectSamplesByIds(ids);
  128. }
  129. /**
  130. * 删除【请填写功能名称】信息
  131. *
  132. * @param id 【请填写功能名称】主键
  133. * @return 结果
  134. */
  135. @Override
  136. public int deleteKuaishouItemCollectSamplesById(Long id) {
  137. return kuaishouItemCollectSamplesMapper.deleteKuaishouItemCollectSamplesById(id);
  138. }
  139. @Override
  140. public JSONObject preview(Long userId, String nickName, JSONArray itemIds, JSONArray promoterIds) {
  141. JSONObject previewJson = new JSONObject();
  142. List<JSONObject> itemList = kuaishouItemCollectSamplesMapper.getItemList(itemIds);
  143. Map<Long, JSONObject> itemMap = new HashMap<>();
  144. for (int i = 0; i < itemList.size(); i++) {
  145. JSONObject itemJson = itemList.get(i);
  146. itemMap.put(itemJson.getLong("itemId"), itemJson);
  147. }
  148. Map<Long, JSONObject> promoterMap = new HashMap<>();
  149. List<JSONObject> promoterList = kuaishouItemCollectSamplesMapper.promoterList(promoterIds);
  150. for (int i = 0; i < promoterList.size(); i++) {
  151. JSONObject promoterJson = promoterList.get(i);
  152. promoterMap.put(promoterJson.getLong("promoterId"), promoterJson);
  153. }
  154. Integer sampleReceivedCount = 0;
  155. List<JSONObject> samples = new ArrayList<>();
  156. for (int i = 0; i < itemIds.size(); i++) {
  157. Long itemId = itemIds.getLong(i);
  158. JSONObject itemJson = itemMap.get(itemId);
  159. for (int j = 0; j < promoterIds.size(); j++) {
  160. Long promoterId = promoterIds.getLong(j);
  161. Integer count = kuaishouItemCollectSamplesMapper.check(itemId, promoterId);
  162. if (count > 0) {
  163. sampleReceivedCount++;
  164. continue;
  165. }
  166. JSONObject sampleJson = new JSONObject();
  167. sampleJson.put("itemId", itemJson.getLong("itemId"));
  168. sampleJson.put("itemTitle", itemJson.getString("itemTitle"));
  169. sampleJson.put("itemPrice", itemJson.getLong("itemPrice"));
  170. sampleJson.put("itemImgUrl", itemJson.getString("itemImgUrl"));
  171. sampleJson.put("commissionRate", itemJson.getLong("commissionRate"));
  172. sampleJson.put("regimentalPromotion", itemJson.getLong("regimentalPromotion"));
  173. sampleJson.put("itemCreateId", itemJson.getLong("userId"));
  174. sampleJson.put("itemCreateName", itemJson.getString("userName"));
  175. sampleJson.put("collectSampleId", userId);
  176. sampleJson.put("collectSampleName", nickName);
  177. JSONObject promoterJson = promoterMap.get(promoterId);
  178. sampleJson.put("promoterId", promoterJson.getLong("promoterId"));
  179. sampleJson.put("promoterNickName", promoterJson.getString("promoterNickName"));
  180. sampleJson.put("promoterPhone", promoterJson.getString("promoterPhone"));
  181. sampleJson.put("promoterAddress", promoterJson.getString("promoterAddress"));
  182. sampleJson.put("consignee", promoterJson.getString("consignee"));
  183. sampleJson.put("promoterUrl", promoterJson.getString("promoterUrl"));
  184. sampleJson.put("collectSampleStatus", 1);
  185. sampleJson.put("collectSampleDesc", "待招商审核");
  186. samples.add(sampleJson);
  187. }
  188. previewJson.put("sampleReceivedCount", sampleReceivedCount);
  189. previewJson.put("samples", samples);
  190. }
  191. return previewJson;
  192. }
  193. @Override
  194. public void batchAdd(JSONArray temCollectSamples) {
  195. List<KuaishouItemCollectSamples> adds = new ArrayList<>();
  196. for (int i = 0; i < temCollectSamples.size(); i++) {
  197. JSONObject sampleJson = temCollectSamples.getJSONObject(i);
  198. KuaishouItemCollectSamples sample = new KuaishouItemCollectSamples();
  199. sample.setItemId(sampleJson.getLong("itemId"));
  200. sample.setItemTitle(sampleJson.getString("itemTitle"));
  201. sample.setItemPrice(sampleJson.getLong("itemPrice"));
  202. sample.setItemImgUrl(sampleJson.getString("itemImgUrl"));
  203. sample.setItemDesc(sampleJson.getString("itemDesc"));
  204. sample.setCommissionRate(sampleJson.getLong("commissionRate"));
  205. sample.setRegimentalPromotion(sampleJson.getLong("regimentalPromotion"));
  206. sample.setSampleCount(sampleJson.getInteger("sampleCount"));
  207. sample.setSampleRequirement(sampleJson.getString("sampleRequirement"));
  208. sample.setItemCreateId(sampleJson.getLong("itemCreateId"));
  209. sample.setItemCreateName(sampleJson.getString("itemCreateName"));
  210. sample.setCollectSampleId(sampleJson.getLong("collectSampleId"));
  211. sample.setCollectSampleName(sampleJson.getString("collectSampleName"));
  212. sample.setPartnerRecommendText(sampleJson.getString("partnerRecommendText"));
  213. sample.setPromoterId(sampleJson.getLong("promoterId"));
  214. sample.setPromoterPhone(sampleJson.getString("promoterPhone"));
  215. sample.setPromoterAddress(sampleJson.getString("promoterAddress"));
  216. sample.setConsignee(sampleJson.getString("consignee"));
  217. sample.setCollectSampleStatus(sampleJson.getInteger("collectSampleStatus"));
  218. sample.setCollectSampleDesc(sampleJson.getString("collectSampleDesc"));
  219. sample.setPromoterNickName(sampleJson.getString("promoterNickName"));
  220. sample.setPromoterUrl(sampleJson.getString("promoterUrl"));
  221. adds.add(sample);
  222. }
  223. if (!Check.isNull(adds)) {
  224. kuaishouItemCollectSamplesMapper.batchAdd(adds);
  225. }
  226. }
  227. @Override
  228. public void subscribe(Long id, String courierNumber, String code) throws Exception {
  229. KuaishouItemCollectSamples samples = kuaishouItemCollectSamplesMapper.selectKuaishouItemCollectSamplesById(id);
  230. SubscribeParameters subscribeParameters = new SubscribeParameters();
  231. subscribeParameters.setCallbackurl("http://ruixuan.api.tjyourong.com.cn/itemCollectSamples/callback");
  232. subscribeParameters.setPhone(samples.getPromoterPhone());
  233. SubscribeParam subscribeParam = new SubscribeParam();
  234. subscribeParam.setParameters(subscribeParameters);
  235. subscribeParam.setCompany(code);
  236. subscribeParam.setNumber(courierNumber);
  237. subscribeParam.setKey("BPEQUJxB9244");
  238. SubscribeReq subscribeReq = new SubscribeReq();
  239. subscribeReq.setSchema(ApiInfoConstant.SUBSCRIBE_SCHEMA);
  240. subscribeReq.setParam(new Gson().toJson(subscribeParam));
  241. IBaseClient subscribe = new Subscribe();
  242. JSONObject jsonObject = JSONObject.parseObject(subscribe.execute(subscribeReq).getBody());
  243. String returnCode = jsonObject.getString("returnCode");
  244. KuaishouItemCollectSamples updateSample = new KuaishouItemCollectSamples();
  245. updateSample.setId(id);
  246. if ("200".equals(returnCode)) {
  247. updateSample.setCollectSampleDesc("快递推送订阅成功");
  248. } else {
  249. updateSample.setCollectSampleStatus(3);
  250. updateSample.setCollectSampleDesc("快递推送订阅失败,失败原因:" + jsonObject.getString("message"));
  251. }
  252. kuaishouItemCollectSamplesMapper.updateKuaishouItemCollectSamples(updateSample);
  253. }
  254. @Override
  255. public void updateByNum(KuaishouItemCollectSamples updateSample) {
  256. kuaishouItemCollectSamplesMapper.updateByNum(updateSample);
  257. }
  258. @Override
  259. public void replaceExpress(KuaishouItemCollectSampleExpress express) {
  260. kuaishouItemCollectSamplesMapper.replaceExpress(express);
  261. }
  262. @Override
  263. public JSONObject getDetail(Long id) {
  264. JSONObject json = new JSONObject();
  265. KuaishouItemCollectSamples sample = kuaishouItemCollectSamplesMapper.selectKuaishouItemCollectSamplesById(id);
  266. KuaishouItemCollectSampleLog log = new KuaishouItemCollectSampleLog();
  267. log.setCollectSampleStatus(1);
  268. log.setUserId(sample.getCollectSampleId());
  269. log.setUserName(sample.getCollectSampleName());
  270. log.setSampleId(sample.getId());
  271. log.setCreateTime(sample.getCreateTime());
  272. log.setUpdateTime(sample.getCreateTime());
  273. kuaishouItemCollectSamplesMapper.insertLog(log);
  274. json.put("sample", sample);
  275. if (!Check.isNull(sample.getCourierNumber())) {
  276. KuaishouItemCollectSampleExpress express = kuaishouItemCollectSamplesMapper.getExpress(sample.getCourierNumber());
  277. if (!Check.isNull(express)) {
  278. json.put("express", express);
  279. }
  280. }
  281. List<KuaishouItemCollectSampleLog> logs = kuaishouItemCollectSamplesMapper.getLogList(id);
  282. if (!Check.isNull(logs)) {
  283. json.put("logs", logs);
  284. }
  285. return json;
  286. }
  287. @Override
  288. public Integer getStatusByCourierNumbe(String nu) {
  289. return kuaishouItemCollectSamplesMapper.getStatusByCourierNumbe(nu);
  290. }
  291. @Override
  292. public JSONObject courierNumberInfo(String courierNumber) {
  293. return kuaishouItemCollectSamplesMapper.courierNumberInfo(courierNumber);
  294. }
  295. @Override
  296. public void insertLog(KuaishouItemCollectSampleLog sampleLog) {
  297. kuaishouItemCollectSamplesMapper.insertLog(sampleLog);
  298. }
  299. @Override
  300. public void cleanLogs(Long id, Integer status) {
  301. kuaishouItemCollectSamplesMapper.cleanLogs(id, status);
  302. }
  303. @Override
  304. public List<JSONObject> exportCollectSamples(Map<String, Object> requestMap) {
  305. return kuaishouItemCollectSamplesMapper.exportCollectSamples(requestMap);
  306. }
  307. @Override
  308. public JSONObject getCollectSampleInfo(Long itemId) {
  309. return kuaishouItemCollectSamplesMapper.getCollectSampleInfo(itemId);
  310. }
  311. @Override
  312. public JSONObject getCopyInfo(Long promoterId) {
  313. JSONObject returnJson = kuaishouItemCollectSamplesMapper.promoterInfo(promoterId);
  314. return returnJson;
  315. }
  316. @Override
  317. public Long getItemIdById(Long id) {
  318. return kuaishouItemCollectSamplesMapper.getItemIdById(id);
  319. }
  320. @Override
  321. public JSONObject getPersonalInfo(Long userId, String type) {
  322. String roleKey = userService.getRoleKeyByUserId(String.valueOf(userId));
  323. List<Long> userList = null;
  324. if ("courtshipManager".equals(roleKey) || "bdManager".equals(roleKey) || "associationManager".equals(roleKey)) {
  325. Long deptId = deptService.getDeptIdByUserId(userId);
  326. userList = deptService.getDeptUserListByDeptId(deptId);
  327. } else {
  328. userList = Arrays.asList(userId);
  329. }
  330. int userType = 1;
  331. if (!"1".equals(type)) {
  332. userType = 2;
  333. if ("supplyChainAdmin".equals(roleKey)) {
  334. //供应链管理员查看 招商人员数据
  335. userList = deptService.getDeptUserListByDeptId(150200L);
  336. }
  337. }
  338. JSONObject returnJson = new JSONObject();
  339. JSONObject data = new JSONObject();
  340. SysUser sysUser = userService.selectUserById(userId);
  341. if (Check.isNotNull(sysUser)) {
  342. data.put("userName", sysUser.getNickName());
  343. }
  344. Integer status = 1; //待审核领样数
  345. data.put("toBeReviewed", kuaishouItemCollectSamplesMapper.getSampleCountByUserId(userList, userType, status));
  346. status = 3;//待发货领样数
  347. data.put("toBeShipped", kuaishouItemCollectSamplesMapper.getSampleCountByUserId(userList, userType, status));
  348. status = 6;//作业上传成功待招商审核
  349. data.put("toBeUploaded", kuaishouItemCollectSamplesMapper.getSampleCountByUserId(userList, userType, status));
  350. returnJson.put("code", 0);
  351. returnJson.put("message", "调用成功");
  352. returnJson.put("data", data);
  353. return returnJson;
  354. }
  355. @Override
  356. public JSONObject getOrderData(Long userId, String startDate, String endDate, String type) {
  357. String roleKey = userService.getRoleKeyByUserId(String.valueOf(userId));
  358. List<Long> userList = null;
  359. if ("courtshipManager".equals(roleKey) || "bdManager".equals(roleKey) || "associationManager".equals(roleKey)) {
  360. Long deptId = deptService.getDeptIdByUserId(userId);
  361. userList = deptService.getDeptUserListByDeptId(deptId);
  362. } else {
  363. userList = Arrays.asList(userId);
  364. }
  365. JSONObject returnJson = new JSONObject();
  366. returnJson.put("code", 0);
  367. returnJson.put("message", "调用成功");
  368. if ("1".equals(type)) {
  369. returnJson.put("data", getgetOrderDataByChannel(userList, startDate, endDate));
  370. } else {
  371. if ("supplyChainAdmin".equals(roleKey)) {
  372. //供应链管理员查看 招商人员数据
  373. userList = deptService.getDeptUserListByDeptId(150200L);
  374. }
  375. returnJson.put("data", getgetOrderDataByAttractInvestment(userList, startDate, endDate));
  376. }
  377. return returnJson;
  378. }
  379. //渠道数据
  380. private JSONObject getgetOrderDataByChannel(List<Long> userList, String startDate, String endDate) {
  381. JSONObject data = new JSONObject();
  382. List<Long> promoterIds = promoterService.selectPromoterIdList(userList);
  383. if (Check.isNotNull(promoterIds)) {
  384. data.put("promoterCount", promoterIds.size());//达人总数
  385. JSONObject Sample = kuaishouItemCollectSamplesMapper.queryTheNumberOfCompletedJobs(promoterIds, startDate, endDate);
  386. data.put("completeCount", Sample.getInteger("completeCount"));//完成作业数
  387. data.put("completeRate", Sample.getString("completeRate"));//合格作业率
  388. JSONObject order = supplyChainService.selectOrderInfo(promoterIds, startDate, endDate);
  389. data.put("allNumber", order.getInteger("allNumber"));//订单总数
  390. data.put("validOrderNUm", order.getInteger("validOrderNUm"));//有效订单数
  391. data.put("inValidOrderNUm", order.getInteger("allNumber") - order.getInteger("validOrderNUm"));//失效订单数
  392. data.put("orderAmount", order.getInteger("orderAmount"));//订单金额
  393. data.put("regimentalPromotionAmount", order.getInteger("regimentalPromotionAmount"));//预估服务费
  394. data.put("baseAmount", order.getInteger("baseAmount"));//累计货贷基数
  395. //当天
  396. String today = DateUtils.getNowDateStr();
  397. Date date = new Date();
  398. //昨天
  399. String yesterday = DateUtils.getSubtractTime(date, 1);
  400. //上周的同一天(上个近七天的结束日期)
  401. String todayOfLastWeek = DateUtils.getSubtractTime(date, 7);
  402. //当前近七天的开始日期
  403. String start = DateUtils.getSubtractTime(date, 6);
  404. //上个近七天的开始日期
  405. String LastStart = DateUtils.getSubtractTime(date, 13);
  406. //当天数据
  407. JSONObject toData = supplyChainService.selectOrderRate(promoterIds, null, today, today);
  408. //昨日数据
  409. JSONObject yesData = supplyChainService.selectOrderRate(promoterIds, null, yesterday, yesterday);
  410. //上周当日数据
  411. JSONObject weeklyDayData = supplyChainService.selectOrderRate(promoterIds, null, todayOfLastWeek, todayOfLastWeek);
  412. //当前近七天的数据
  413. JSONObject inDayData = supplyChainService.selectOrderRate(promoterIds, null, start, today);
  414. //上个近七天的数据
  415. JSONObject lastDayData = supplyChainService.selectOrderRate(promoterIds, null, LastStart, todayOfLastWeek);
  416. //日环比 (今天-昨天)/昨天*100%
  417. BigDecimal dateOrder = toData.getBigDecimal("allNumber").subtract(yesData.getBigDecimal("allNumber")).divide(yesData.getBigDecimal("allNumber"), 4, RoundingMode.HALF_UP);
  418. BigDecimal dateAmount = toData.getBigDecimal("orderAmount").subtract(yesData.getBigDecimal("orderAmount")).divide(yesData.getBigDecimal("orderAmount"), 4, RoundingMode.HALF_UP);
  419. data.put("dateOrderRate", dateOrder);
  420. data.put("dateAmountRate", dateAmount);
  421. //周同比
  422. BigDecimal monthOrder = toData.getBigDecimal("allNumber").subtract(weeklyDayData.getBigDecimal("allNumber")).divide(weeklyDayData.getBigDecimal("allNumber"), 4, RoundingMode.HALF_UP);
  423. BigDecimal monthAmount = toData.getBigDecimal("orderAmount").subtract(weeklyDayData.getBigDecimal("orderAmount")).divide(weeklyDayData.getBigDecimal("orderAmount"), 4, RoundingMode.HALF_UP);
  424. data.put("monthOrderRate", monthOrder);
  425. data.put("monthAmountRate", monthAmount);
  426. //数据对比
  427. BigDecimal dataOrder = inDayData.getBigDecimal("allNumber").subtract(lastDayData.getBigDecimal("allNumber")).divide(lastDayData.getBigDecimal("allNumber"), 4, RoundingMode.HALF_UP);
  428. BigDecimal dataAmount = inDayData.getBigDecimal("orderAmount").subtract(lastDayData.getBigDecimal("orderAmount")).divide(lastDayData.getBigDecimal("orderAmount"), 4, RoundingMode.HALF_UP);
  429. data.put("dataOrderRate", dataOrder);
  430. data.put("dataAmountRate", dataAmount);
  431. }
  432. return data;
  433. }
  434. //招商数据
  435. private JSONObject getgetOrderDataByAttractInvestment(List<Long> userList, String startDate, String endDate) {
  436. JSONObject data = new JSONObject();
  437. List<Long> promoterIds = promoterService.selectPromoterIdList(null);
  438. if (Check.isNotNull(promoterIds)) {
  439. data.put("promoterCount", promoterIds.size());//达人总数
  440. }
  441. //查询登录人(创建人)的所有商品
  442. List<Long> itemIds = kuaishouItemCollectSamplesMapper.getItemIdsByCreateId(userList);
  443. if (Check.isNotNull(itemIds)) {
  444. JSONObject order = supplyChainService.selectOrderInfoByItemIds(itemIds, startDate, endDate);
  445. data.put("sendCount", order.getInteger("sendCount"));//发货数
  446. data.put("sendRate", order.getString("sendRate"));//订单发货率
  447. data.put("allNumber", order.getInteger("allNumber"));//订单总数
  448. data.put("validOrderNUm", order.getInteger("validOrderNUm"));//有效订单数
  449. data.put("inValidOrderNUm", order.getInteger("allNumber") - order.getInteger("validOrderNUm"));//失效订单数
  450. data.put("orderAmount", order.getInteger("orderAmount"));//订单金额
  451. data.put("regimentalPromotionAmount", order.getInteger("regimentalPromotionAmount"));//预估服务费
  452. data.put("baseAmount", order.getInteger("baseAmount"));//累计货贷基数
  453. //当天
  454. String today = DateUtils.getNowDateStr();
  455. Date date = new Date();
  456. //昨天
  457. String yesterday = DateUtils.getSubtractTime(date, 1);
  458. //上周的同一天(上个近七天的结束日期)
  459. String todayOfLastWeek = DateUtils.getSubtractTime(date, 7);
  460. //当前近七天的开始日期
  461. String start = DateUtils.getSubtractTime(date, 6);
  462. //上个近七天的开始日期
  463. String LastStart = DateUtils.getSubtractTime(date, 13);
  464. //当天数据
  465. JSONObject toData = supplyChainService.selectOrderRate(null, itemIds, today, today);
  466. //昨日数据
  467. JSONObject yesData = supplyChainService.selectOrderRate(null, itemIds, yesterday, yesterday);
  468. //上周当日数据
  469. JSONObject weeklyDayData = supplyChainService.selectOrderRate(null, itemIds, todayOfLastWeek, todayOfLastWeek);
  470. //当前近七天的数据
  471. JSONObject inDayData = supplyChainService.selectOrderRate(null, itemIds, start, today);
  472. //上个近七天的数据
  473. JSONObject lastDayData = supplyChainService.selectOrderRate(null, itemIds, LastStart, todayOfLastWeek);
  474. //日环比 (今天-昨天)/昨天*100%
  475. BigDecimal dateOrder = toData.getBigDecimal("allNumber").subtract(yesData.getBigDecimal("allNumber")).divide(yesData.getBigDecimal("allNumber"), 4, RoundingMode.HALF_UP);
  476. BigDecimal dateAmount = toData.getBigDecimal("orderAmount").subtract(yesData.getBigDecimal("orderAmount")).divide(yesData.getBigDecimal("orderAmount"), 4, RoundingMode.HALF_UP);
  477. data.put("dateOrderRate", dateOrder);
  478. data.put("dateAmountRate", dateAmount);
  479. //周同比
  480. BigDecimal monthOrder = toData.getBigDecimal("allNumber").subtract(weeklyDayData.getBigDecimal("allNumber")).divide(weeklyDayData.getBigDecimal("allNumber"), 4, RoundingMode.HALF_UP);
  481. BigDecimal monthAmount = toData.getBigDecimal("orderAmount").subtract(weeklyDayData.getBigDecimal("orderAmount")).divide(weeklyDayData.getBigDecimal("orderAmount"), 4, RoundingMode.HALF_UP);
  482. data.put("monthOrderRate", monthOrder);
  483. data.put("monthAmountRate", monthAmount);
  484. //数据对比
  485. BigDecimal dataOrder = inDayData.getBigDecimal("allNumber").subtract(lastDayData.getBigDecimal("allNumber")).divide(lastDayData.getBigDecimal("allNumber"), 4, RoundingMode.HALF_UP);
  486. BigDecimal dataAmount = inDayData.getBigDecimal("orderAmount").subtract(lastDayData.getBigDecimal("orderAmount")).divide(lastDayData.getBigDecimal("orderAmount"), 4, RoundingMode.HALF_UP);
  487. data.put("dataOrderRate", dataOrder);
  488. data.put("dataAmountRate", dataAmount);
  489. }
  490. return data;
  491. }
  492. @Override
  493. public JSONObject getDataAnalysis(Long userId, String type) {
  494. String roleKey = userService.getRoleKeyByUserId(String.valueOf(userId));
  495. List<Long> userList = null;
  496. if ("courtshipManager".equals(roleKey) || "bdManager".equals(roleKey) || "associationManager".equals(roleKey)) {
  497. Long deptId = deptService.getDeptIdByUserId(userId);
  498. userList = deptService.getDeptUserListByDeptId(deptId);
  499. } else {
  500. userList = Arrays.asList(userId);
  501. }
  502. JSONObject returnJson = new JSONObject();
  503. returnJson.put("code", 0);
  504. returnJson.put("message", "调用成功");
  505. if ("1".equals(type)) {
  506. returnJson.put("data", getDataAnalysisByChannel(userList));
  507. } else {
  508. if ("supplyChainAdmin".equals(roleKey)) {
  509. //供应链管理员查看 招商人员数据
  510. userList = deptService.getDeptUserListByDeptId(150200L);
  511. }
  512. returnJson.put("data", getDataAnalysisByAttractInvestment(userList));
  513. }
  514. return returnJson;
  515. }
  516. @Override
  517. public List<JSONObject> queryProductList(Map<String, Object> map) {
  518. PageUtils.startPage();
  519. return kuaishouItemCollectSamplesMapper.queryProductList(map);
  520. }
  521. // 渠道—数据分析
  522. private JSONObject getDataAnalysisByChannel(List<Long> userList) {
  523. JSONObject data = new JSONObject();
  524. List<Long> promoterIds = promoterService.selectPromoterIdList(userList);
  525. if (Check.isNotNull(promoterIds)) {
  526. //当天
  527. String end = DateUtils.getNowDateStr();
  528. //当前月份第一天
  529. String start = DateUtils.getFirstDayByMonth();
  530. Map<String, Object> map = new HashMap<>();
  531. map.put("start", start);
  532. map.put("end", end);
  533. map.put("userList", userList);
  534. map.put("promoterIds", promoterIds);
  535. map.put("startLong", DateUtils.getStartLongTime(start));
  536. map.put("endLong", DateUtils.getEndLongTime(end));
  537. List<JSONObject> list = supplyChainService.getMonthOrderAmount(map);
  538. List<String> allDates = DateUtils.getAllDatesOfTwoTimes(start, end);
  539. if (Check.isNull(list) || list.size() != allDates.size()) {
  540. String orderAmountStr = JSONObject.toJSONString(list);
  541. for (String date : allDates) {
  542. if (!orderAmountStr.contains(date)) {
  543. JSONObject obj = new JSONObject();
  544. obj.put("date", date);
  545. obj.put("orderAmount", 0);
  546. obj.put("totalRegimentalSettleAmount", 0);
  547. obj.put("promoterCount", 0);
  548. list.add(obj);
  549. }
  550. }
  551. //排序
  552. Collections.sort(list, new Comparator<JSONObject>() {
  553. @Override
  554. public int compare(JSONObject o1, JSONObject o2) {
  555. return o1.getString("date").compareTo(o2.getString("date"));
  556. }
  557. });
  558. }
  559. data.put("list", list);
  560. map.put("toStartLong", DateUtils.getStartLongTime(end));
  561. JSONObject amount = supplyChainService.getMonthOrderAmountTotal(map);
  562. if (Check.isNotNull(amount)) {
  563. data.put("orderAmount", amount.getInteger("orderAmount"));
  564. data.put("totalRegimentalSettleAmount", amount.getInteger("totalRegimentalSettleAmount"));
  565. data.put("orderAmountRate", amount.getString("orderAmountRate"));
  566. data.put("totalRegimentalSettleAmountRate", amount.getString("totalRegimentalSettleAmountRate"));
  567. }
  568. JSONObject promoter = promoterService.getgetMonthPromoterTotal(userList, start, end);
  569. if (Check.isNotNull(promoter)) {
  570. data.put("promoterCount", promoter.getString("count"));
  571. data.put("promoterRate", promoter.getString("rate"));
  572. }
  573. }
  574. return data;
  575. }
  576. // 招商—数据分析
  577. private JSONObject getDataAnalysisByAttractInvestment(List<Long> userList) {
  578. JSONObject data = new JSONObject();
  579. //查询登录人(创建人)的所有商品
  580. List<Long> itemIds = kuaishouItemCollectSamplesMapper.getItemIdsByCreateId(userList);
  581. if (Check.isNotNull(itemIds)) {
  582. //当天
  583. String end = DateUtils.getNowDateStr();
  584. //当前月份第一天
  585. String start = DateUtils.getFirstDayByMonth();
  586. Map<String, Object> map = new HashMap<>();
  587. map.put("start", start);
  588. map.put("end", end);
  589. map.put("itemIds", itemIds);
  590. map.put("startLong", DateUtils.getStartLongTime(start));
  591. map.put("toStartLong", DateUtils.getStartLongTime(end));
  592. map.put("endLong", DateUtils.getEndLongTime(end));
  593. List<JSONObject> list = supplyChainService.getMonthOrderAmountByItems(map);
  594. List<String> allDates = DateUtils.getAllDatesOfTwoTimes(start, end);
  595. if (Check.isNull(list) || list.size() != allDates.size()) {
  596. String orderAmountStr = JSONObject.toJSONString(list);
  597. for (String date : allDates) {
  598. if (!orderAmountStr.contains(date)) {
  599. JSONObject obj = new JSONObject();
  600. obj.put("date", date);
  601. obj.put("orderAmount", 0);
  602. obj.put("totalRegimentalSettleAmount", 0);
  603. obj.put("orderCount", 0);
  604. list.add(obj);
  605. }
  606. }
  607. //排序
  608. Collections.sort(list, new Comparator<JSONObject>() {
  609. @Override
  610. public int compare(JSONObject o1, JSONObject o2) {
  611. return o1.getString("date").compareTo(o2.getString("date"));
  612. }
  613. });
  614. }
  615. data.put("list", list);
  616. JSONObject amount = supplyChainService.getMonthOrderAmountTotalByItems(map);
  617. if (Check.isNotNull(amount)) {
  618. data.put("orderAmount", amount.getInteger("orderAmount"));
  619. data.put("totalRegimentalSettleAmount", amount.getInteger("totalRegimentalSettleAmount"));
  620. data.put("orderAmountRate", amount.getString("orderAmountRate"));
  621. data.put("totalRegimentalSettleAmountRate", amount.getString("totalRegimentalSettleAmountRate"));
  622. data.put("orderCount", amount.getString("orderCount"));
  623. data.put("orderCountRate", amount.getString("orderCountRate"));
  624. }
  625. }
  626. return data;
  627. }
  628. }