0821b0c05b8ceacee0cc1a589aac4181ef83f089.svn-base 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. package com.iamberry.app.service;
  2. import java.util.ArrayList;
  3. import java.util.Calendar;
  4. import java.util.Date;
  5. import java.util.IdentityHashMap;
  6. import java.util.LinkedHashMap;
  7. import java.util.LinkedList;
  8. import java.util.List;
  9. import java.util.Map;
  10. import org.apache.commons.lang3.math.NumberUtils;
  11. import org.springframework.stereotype.Service;
  12. import com.iamberry.app.config.Constants;
  13. import com.iamberry.app.core.dto.MilkInfoDTO;
  14. import com.iamberry.app.core.dto.RecordCountInfoDTO;
  15. import com.iamberry.app.core.dto.RecordDTO;
  16. import com.iamberry.app.core.entity.MilkImages;
  17. import com.iamberry.app.core.entity.MilkMakingRecord;
  18. import com.iamberry.app.core.entity.MilkPowderInfo;
  19. import com.iamberry.app.core.entity.User;
  20. import com.iamberry.app.face.MilkService;
  21. import com.iamberry.app.ulitity.Utility;
  22. /**
  23. * MilkService
  24. *
  25. * @author Moon Cheng
  26. * @date 2016年3月23日 上午11:33:10
  27. */
  28. @Service
  29. public class MilkServiceImpl extends BaseService implements MilkService {
  30. /**
  31. * setMilkMakingRecord
  32. * @param makingRecord
  33. * @param token
  34. * @param recordId
  35. * @return
  36. */
  37. public MilkMakingRecord setMilkMakingRecord(MilkMakingRecord makingRecord, String token) {
  38. User userInfo = validateUserToken(token);
  39. if (userInfo == null) {
  40. return null;
  41. }
  42. makingRecord.setUser(userInfo.getId());
  43. makingRecord.setTimestamp_(new Date());
  44. milkMapper.insertMilkMakingRecord(makingRecord);
  45. return makingRecord;
  46. }
  47. /**
  48. * searchUserRecordsBytime
  49. *
  50. * @author Moon Cheng
  51. * @param userId
  52. * @param startTime
  53. * @param endTime
  54. * @return Milk Making Record List
  55. */
  56. public Map<String, List<RecordDTO>> searchUserRecordsByTime(Long userId, String dateStatus, String chosenDate,
  57. String machineMac) {
  58. Map<String, List<RecordDTO>> recordInfos = new LinkedHashMap<String, List<RecordDTO>>();
  59. String dateType = null, formatter = null;
  60. Calendar calendar = Calendar.getInstance();
  61. if (chosenDate != null) {
  62. // calendar.setTime(Utility.formatStringToDate("yyyy-MM-dd
  63. // HH:mm:ss", chosenDate));
  64. // 防止无数据时显示分钟错误
  65. chosenDate = chosenDate.substring(0, chosenDate.length() - 6) + ":00:00";
  66. calendar.setTime(Utility.formatStringToDate("yyyy-MM-dd HH:mm:ss", chosenDate));
  67. } else {
  68. calendar.setTime(new Date());
  69. }
  70. Date start = null, end = null;
  71. switch (dateStatus) {
  72. case "day":
  73. dateType = "days";
  74. formatter = "%Y%m%d%H";
  75. calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONDAY), calendar.get(Calendar.DATE), 0, 0,
  76. 0);
  77. start = calendar.getTime();
  78. calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONDAY), calendar.get(Calendar.DATE), 23,
  79. 59, 59);
  80. end = calendar.getTime();
  81. recordInfos.put("app", Utility.convertMap(
  82. milkMapper.selectMilkMakingRecords(start, end, "app", dateType, formatter, userId, machineMac),
  83. dateType));
  84. recordInfos.put("machine", Utility.convertMap(
  85. milkMapper.selectMachineMilkMakingRecords(start, end, "machine", dateType, formatter, machineMac),
  86. dateType));
  87. break;
  88. case "week":
  89. dateType = "weeks";
  90. formatter = "%Y%m%d";
  91. calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONDAY), calendar.get(Calendar.DATE), 0, 0,
  92. 0);
  93. calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
  94. start = calendar.getTime();
  95. calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONDAY), calendar.get(Calendar.DATE), 23,
  96. 59, 59);
  97. if (Calendar.SUNDAY < Calendar.MONDAY) {
  98. calendar.add(Calendar.DATE, 7);
  99. }
  100. calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
  101. end = calendar.getTime();
  102. recordInfos.put("app", Utility.convertMap(
  103. milkMapper.selectMilkMakingRecords(start, end, "app", dateType, formatter, userId, machineMac),
  104. dateType));
  105. recordInfos.put("machine", Utility.convertMap(
  106. milkMapper.selectMachineMilkMakingRecords(start, end, "machine", dateType, formatter, machineMac),
  107. dateType));
  108. break;
  109. case "year":
  110. dateType = "years";
  111. formatter = "%Y%m";
  112. calendar.set(calendar.get(Calendar.YEAR), 0, 1, 0, 0, 0);
  113. start = calendar.getTime();
  114. calendar.set(calendar.get(Calendar.YEAR), 11, 31, 23, 59, 59);
  115. end = calendar.getTime();
  116. recordInfos.put("app", Utility.convertMap(
  117. milkMapper.selectMilkMakingRecords(start, end, "app", dateType, formatter, userId, machineMac),
  118. dateType));
  119. recordInfos.put("machine", Utility.convertMap(
  120. milkMapper.selectMachineMilkMakingRecords(start, end, "machine", dateType, formatter, machineMac),
  121. dateType));
  122. break;
  123. }
  124. return Utility.fillAppMachineRecordWithZero(Utility.synAppMachineRecord(recordInfos), dateType, chosenDate);
  125. }
  126. /**
  127. * searchUserRecordById
  128. *
  129. * @author Moon Cheng
  130. * @param recordId
  131. * @return Milk Making Record Information
  132. */
  133. public MilkMakingRecord searchUserRecordById(Long recordId) {
  134. MilkMakingRecord makingRecord = milkMapper.selectMilkMakingRecord(recordId);
  135. return makingRecord;
  136. }
  137. /**
  138. * 根据用户,获取冲奶记录的-->总量和次数
  139. *
  140. * @author Moon Cheng
  141. * @param userId
  142. * @return
  143. */
  144. public RecordCountInfoDTO getTotalMilkVolumeMadeByUser(Long userId) {
  145. RecordCountInfoDTO recordcount = milkMapper.getMilkPowderSumByUser(userId);
  146. return recordcount;
  147. }
  148. /**
  149. * setMilkPowderInfo
  150. *
  151. * @author Moon Cheng
  152. * @param entity
  153. * @param token
  154. * @return Milk Powder Information
  155. */
  156. public MilkPowderInfo setMilkPowderInfo(MilkPowderInfo entity, String token) {
  157. User userInfo = validateUserToken(token);
  158. if (userInfo == null) {
  159. return null;
  160. }
  161. // change status as user's phone number
  162. entity.setStatus_(
  163. userInfo.getUsername().length() > 11 ? Constants.MILK_POWDER_NOT_APPROVED : userInfo.getUsername());
  164. entity.setCreated_on(new Date());
  165. milkMapper.insertMilkPowderInfo(entity);
  166. return entity;
  167. }
  168. /**
  169. * searchMilkPowderInfoByBarCode
  170. *
  171. * @author Moon Cheng
  172. * @param barcode
  173. * @return Milk Powder Information
  174. */
  175. public MilkPowderInfo searchMilkPowderInfoByBarCode(String barcode) {
  176. MilkPowderInfo milkPowderInfo = milkMapper.selectMilkPowderInfo(barcode);
  177. return milkPowderInfo;
  178. }
  179. /**
  180. *
  181. * 通过品牌名获取奶粉信息
  182. * @author Moon Cheng, Yin
  183. * @param brand
  184. * @return Milk Powder List
  185. */
  186. public Map<String, List<String>> searchMilkPowderInfosByBrand(String brand) {
  187. brand = "%" + brand.trim() + "%";
  188. Map<String, List<String>> infos = new IdentityHashMap<String, List<String>>();
  189. List<MilkInfoDTO> milkInfo = milkMapper.selectMilkInfoBybrand(brand);
  190. for (int i = 0; i < milkInfo.size(); i++) {
  191. List<String> list = new LinkedList<String>();
  192. list.add(milkInfo.get(i).getLevel() + ":" + milkInfo.get(i).getType() + ":"
  193. + milkInfo.get(i).getPowder_ratio() + ":" + milkInfo.get(i).getId() + ":"
  194. + milkInfo.get(i).getWeight_per_spoon());
  195. infos.put(milkInfo.get(i).getSeries(),list);
  196. }
  197. return infos;
  198. }
  199. /**
  200. * searchMilkPowderBrand
  201. *
  202. * @return Brand List
  203. */
  204. public List<String> searchMilkPowderBrand() {
  205. List<String> milkPowderInfos = milkMapper.selectMilkPowderBrand();
  206. List<String> result = new ArrayList<>();
  207. milkPowderInfos.forEach(milk -> {
  208. if (NumberUtils.isNumber(milk) && milk.contains(".")) {
  209. milk = milk.substring(0, milk.indexOf("."));
  210. }
  211. result.add(milk);
  212. });
  213. return result;
  214. }
  215. /**
  216. * searchMilkInfoByBrandSeriesLevel
  217. *
  218. * @param brand
  219. * @param series
  220. * @param level
  221. * @return
  222. */
  223. public MilkPowderInfo searchMilkInfoByBrandSeriesLevel(String brand, String series, String level) {
  224. return milkMapper.selectMilkInfoByBrandSeriesLevel(brand, series, level);
  225. }
  226. // =====================================TuyaHistoryData======================================
  227. /**
  228. * getLastRecordDate
  229. *
  230. * @return
  231. */
  232. public Date getLastRecordDate() {
  233. Date lastDate = milkMapper.selectLastRecordDate();
  234. return lastDate == null ? new Date() : lastDate;
  235. }
  236. /**
  237. * addRecordData
  238. * @param devId
  239. * @param value
  240. * @param time
  241. */
  242. public void addRecordData(String devId, String value, Long time, Long userId) {
  243. //判断当前机器30秒内是否有数据上传
  244. Date timestamp_ = milkMapper.selectMakingRecordAndmachine(devId);
  245. boolean msg = true;
  246. if(timestamp_ != null){
  247. if((new Date().getTime() - timestamp_.getTime()) <= 30000){
  248. msg = false;
  249. }
  250. }
  251. if(msg){
  252. MilkMakingRecord milkMakingRecord = new MilkMakingRecord();
  253. milkMakingRecord.setVolume(Integer.parseInt(value));
  254. milkMakingRecord.setMachine(devId);
  255. milkMakingRecord.setTimestamp_(new Date(time));
  256. milkMakingRecord.setUser(userId);
  257. milkMapper.insertRecordData(milkMakingRecord);
  258. }
  259. }
  260. @Override
  261. public void setMilkImages(MilkImages images) {
  262. // TODO Auto-generated method stub
  263. milkMapper.insertMilkImages(images);
  264. }
  265. @Override
  266. public MilkPowderInfo selectMilkPowderByBar(String barcode) {
  267. // TODO Auto-generated method stub
  268. return milkMapper.selectMilkPowderByBar(barcode);
  269. }
  270. }