95df5945e3fadcd750159ef1304b32ea5dee1c79.svn-base 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. package com.iamberry.app.international.controller;
  2. import static com.iamberry.app.config.Response.BARCODE_NOT_FOUND;
  3. import static com.iamberry.app.config.Response.INVALID_TOKEN;
  4. import static com.iamberry.app.config.Response.SUCCESS;
  5. import static com.iamberry.app.config.Response.INSERT_DUPLICATE;
  6. import java.util.HashMap;
  7. import java.util.List;
  8. import java.util.Map;
  9. import javax.servlet.http.HttpServletRequest;
  10. import org.springframework.dao.DataAccessException;
  11. import org.springframework.stereotype.Controller;
  12. import org.springframework.web.bind.WebDataBinder;
  13. import org.springframework.web.bind.annotation.InitBinder;
  14. import org.springframework.web.bind.annotation.RequestMapping;
  15. import org.springframework.web.bind.annotation.RequestMethod;
  16. import org.springframework.web.bind.annotation.RequestParam;
  17. import org.springframework.web.bind.annotation.ResponseBody;
  18. import org.springframework.web.multipart.MultipartFile;
  19. import com.iamberry.app.config.APIStatus;
  20. import com.iamberry.app.config.Response;
  21. import com.iamberry.app.config.ResponseHeader;
  22. import com.iamberry.app.core.dto.RecordDTO;
  23. import com.iamberry.app.core.entity.MilkImages;
  24. import com.iamberry.app.core.entity.MilkMakingRecord;
  25. import com.iamberry.app.core.entity.MilkPowderInfo;
  26. import com.iamberry.app.core.entity.User;
  27. import com.iamberry.wechat.file.FileUtils;
  28. import com.iamberry.wechat.file.UploadResultBean;
  29. /**
  30. * UserController
  31. *
  32. * @author Moon Cheng
  33. * @date 2016年1月18日 上午11:53:04
  34. */
  35. @Controller
  36. @RequestMapping("/secure/milk")
  37. public class MilkController extends BaseController {
  38. @InitBinder("makingRecord")
  39. public void initBinderRecord(WebDataBinder binder) {
  40. binder.setFieldDefaultPrefix("makingRecord.");
  41. }
  42. @InitBinder("milkPowderInfo")
  43. public void initBinderMilkPowder(WebDataBinder binder) {
  44. binder.setFieldDefaultPrefix("milkPowderInfo.");
  45. }
  46. /**
  47. * 添加冲奶信息
  48. * @author Moon Cheng
  49. * @param token 唯一标识符
  50. * @param makingRecord 冲奶信息实体类
  51. * @return 1000:请求成功;2100:无效token;
  52. */
  53. @RequestMapping(value = "/set_milk_making_record", method = RequestMethod.POST)
  54. @ResponseBody
  55. private Response setMilkMakingRecord(@RequestParam("token") String token, MilkMakingRecord makingRecord) {
  56. //目前添加了新的冲奶数据同步接口,所以当前方法做空实现处理
  57. if(1 == 1){
  58. return SUCCESS.setData(makingRecord, 1);
  59. }
  60. makingRecord = milkService.setMilkMakingRecord(makingRecord, token);
  61. if (makingRecord == null) {
  62. return INVALID_TOKEN;
  63. }
  64. return SUCCESS.setData(makingRecord, 1);
  65. }
  66. /**
  67. * 通过日期,日期类型,统计某时间的,冲奶总量
  68. * @param token 唯一标识符
  69. * @param dateStatus 标识符 : day week year
  70. * @param chosenDate 结束时间
  71. * @param machineMac 机器mac地址
  72. * @return
  73. */
  74. @RequestMapping(value = "/search_user_records_by_time", method = RequestMethod.POST)
  75. @ResponseBody
  76. private Response searchUserRecordsByTime(@RequestParam(value = "token") String token,
  77. @RequestParam("date_status") String dateStatus, @RequestParam("chosen_date") String chosenDate,
  78. @RequestParam("devid") String machineMac) {
  79. User userInfo = userService.validateUserToken(token);
  80. if (userInfo == null) {
  81. return INVALID_TOKEN;
  82. }
  83. Map<String, List<RecordDTO>> makingRecords = milkService.searchUserRecordsByTime(userInfo.getId(), dateStatus,
  84. chosenDate, machineMac);
  85. return SUCCESS.setData(makingRecords, makingRecords.size());
  86. }
  87. /**
  88. * 通过冲奶记录id获取冲奶记录详情
  89. * @author Moon Cheng
  90. * @param recordId 冲奶记录,id
  91. * @return
  92. *//*
  93. @RequestMapping(value = "/search_user_record_by_id", method = RequestMethod.POST)
  94. @ResponseBody
  95. private Response searchUserRecordById(@RequestParam(value = "record_id") Long recordId) {
  96. MilkMakingRecord makingRecord = milkService.searchUserRecordById(recordId);
  97. return SUCCESS.setData(makingRecord, 1);
  98. }*/
  99. /**
  100. * 根据用户id获取用户,冲奶总容量
  101. * @author Moon Cheng
  102. * @param userId 用户id
  103. * @return
  104. */
  105. @RequestMapping(value = "/get_user_total_milk_volume", method = RequestMethod.POST)
  106. @ResponseBody
  107. private Response getTotalMilkVolumeMadeByUser(@RequestParam(value = "user_id") Long userId) {
  108. return SUCCESS.setData(milkService.getTotalMilkVolumeMadeByUser(userId), 0);
  109. }
  110. /**
  111. * 手动添加,奶粉信息!
  112. * @author Moon Cheng
  113. * @param token 唯一标识符
  114. * @param milkPowderInfo 奶粉信息
  115. * @return
  116. */
  117. @RequestMapping(value = "/set_milk_powder_info", method = RequestMethod.POST)
  118. @ResponseBody
  119. private Response setMilkPowderInfo(
  120. @RequestParam(value = "a_mount") String amountStr,
  121. @RequestParam(value = "spoon_num") String spoon_num,
  122. @RequestParam(value = "spoon_ml") String spoon_ml,
  123. @RequestParam(value = "imageFront") String imageFront,
  124. @RequestParam(value = "imageBar") String imageBar,
  125. @RequestParam(value = "imageFeed") String imageFeed,@RequestParam(value = "token") String token, MilkPowderInfo milkPowderInfo) {
  126. if(milkPowderInfo.getBar_code() == null){
  127. return INVALID_TOKEN;
  128. }
  129. MilkPowderInfo milkInfo = milkService.selectMilkPowderByBar(milkPowderInfo.getBar_code());
  130. if(milkInfo != null){
  131. return INSERT_DUPLICATE;
  132. }
  133. // 勺量,每勺多少克 量勺 克数范围2-18
  134. //String amountStr = request.getParameter("a_mount");
  135. if (amountStr == null) {
  136. // 兼容低版本
  137. milkPowderInfo = milkService.setMilkPowderInfo(milkPowderInfo, token);
  138. if (milkPowderInfo == null) {
  139. return INVALID_TOKEN;
  140. }
  141. return SUCCESS.setData(milkPowderInfo, 1);
  142. }
  143. float amount = Float.parseFloat(amountStr);
  144. // 勺数,多少少 量勺勺数范围 1-10
  145. int spoonNum = Integer.parseInt(spoon_num);
  146. // ML,1勺多少奶量 水量范围30-300
  147. float spoonML = Float.parseFloat(spoon_ml);
  148. // 毫升/勺
  149. float s = spoonML / spoonNum;
  150. // 混合比 计算公式:勺量 * 勺数 / 毫升 / 100 = 混合比
  151. float ratio = amount * spoonNum / spoonML * 100;
  152. milkPowderInfo.setPowder_ratio(ratio);
  153. milkPowderInfo.setWeight_per_spoon(amount);
  154. milkPowderInfo.setMilk_volume_per_spoon(s);
  155. // 密度
  156. /*
  157. * A<13.2 6
  158. 13.21<A<15.3 7
  159. 15.31<A<17.4 8
  160. 17.41<A<19.5 9
  161. 19.51<A<22.0 10
  162. 22.1 <A 10
  163. */
  164. int m = 6;
  165. if (ratio < 13.2) {
  166. m = 6;
  167. } else if (ratio > 13.21 && ratio < 15.3) {
  168. m = 7;
  169. } else if (ratio > 15.31 && ratio < 17.4) {
  170. m = 8;
  171. } else if (ratio > 17.41 && ratio < 19.5) {
  172. m = 9;
  173. } else {
  174. m = 10;
  175. }
  176. milkPowderInfo.setDensity((float)m);
  177. milkPowderInfo.setType(m);//同密度字段
  178. // 保存操作
  179. try {
  180. milkPowderInfo = milkService.setMilkPowderInfo(milkPowderInfo, token);
  181. } catch (DataAccessException e) {
  182. return INSERT_DUPLICATE;
  183. }
  184. if (milkPowderInfo == null) {
  185. return INVALID_TOKEN;
  186. }
  187. // 保存图片
  188. /*String imageFront = request.getParameter("imageFront");
  189. String imageBar = request.getParameter("imageBar");
  190. String imageFeed = request.getParameter("imageFeed");*/
  191. MilkImages images = new MilkImages();
  192. images.setImage_Front(imageFront);
  193. images.setImage_Bar(imageBar);
  194. images.setImage_Feed(imageFeed);
  195. images.setImage_Milk_ID(milkPowderInfo.getId());
  196. milkService.setMilkImages(images);
  197. return SUCCESS.setData(milkPowderInfo, 1);
  198. }
  199. /**
  200. * 通过,条形码获取奶粉信息
  201. * @author Moon Cheng
  202. * @param barcode 条形码code
  203. * @return
  204. */
  205. @RequestMapping(value = "/search_milk_powder_info_by_barcode", method = RequestMethod.POST)
  206. @ResponseBody
  207. private Response searchMilkPowderInfoByBarCode(@RequestParam(value = "barcode") String barcode) {
  208. MilkPowderInfo milkPowderInfo = milkService.searchMilkPowderInfoByBarCode(barcode);
  209. if (milkPowderInfo == null) {
  210. return BARCODE_NOT_FOUND;
  211. }
  212. return SUCCESS.setData(milkPowderInfo, 1);
  213. }
  214. /**
  215. * 铜鼓品牌名获取奶粉信息
  216. * @author Moon Cheng, Yin
  217. * @param brand 品牌名
  218. * @return
  219. */
  220. @RequestMapping(value = "/search_milk_powder_infos_by_brand", method = RequestMethod.POST)
  221. @ResponseBody
  222. private Response searchMilkPowderInfosByBrand(@RequestParam(value = "brand") String brand) {
  223. Map<String, List<String>> milkPowderInfos = milkService.searchMilkPowderInfosByBrand(brand);
  224. return SUCCESS.setData(milkPowderInfos, milkPowderInfos.size());
  225. }
  226. /**
  227. * 获取奶粉品牌
  228. * @author Yin
  229. * @return 过滤掉品牌名中有.的 例如 a.b 这里或只查询到a
  230. */
  231. @RequestMapping(value = "/search_milk_powder_brand", method = RequestMethod.GET)
  232. @ResponseBody
  233. private Response searchMilkPowderBrand() {
  234. List<String> milkPowderInfos = milkService.searchMilkPowderBrand();
  235. return SUCCESS.setData(milkPowderInfos, milkPowderInfos.size());
  236. }
  237. /**
  238. * 通过奶粉品牌、段数、系列、查询奶粉信息
  239. * @param brand 品牌
  240. * @param series 系列
  241. * @param level 段数
  242. * @return
  243. */
  244. /* @RequestMapping(value = "/search_milk_info_by_brand_series_level", method = RequestMethod.POST)
  245. @ResponseBody
  246. private Response searchMilkInfoByBrandSeriesLevel(@RequestParam("brand") String brand,
  247. @RequestParam("series") String series, @RequestParam("level") String level) {
  248. return SUCCESS.setData(milkService.searchMilkInfoByBrandSeriesLevel(brand, series, level), 1);
  249. }*/
  250. /**
  251. * 上传奶粉信息的域名,及保存的路径,需要tomcat单独域名映射/或者是nginx
  252. */
  253. private static String SAVE_MILK_IMAGE_DOMAIN = "http://milk.iamberry.com/";
  254. private static String SAVE_MILK_IMAGE_PATH = "/common/";
  255. /**
  256. * @param model
  257. * @param request
  258. * @return
  259. */
  260. @ResponseBody
  261. @RequestMapping(value = "/upload_image", method = RequestMethod.POST)
  262. public Response uploadFileImage(@RequestParam("file")MultipartFile[] files, HttpServletRequest request) {
  263. Map<String, String> filemap= new HashMap<String, String>();
  264. for (int i = 0; i < files.length; i++) {
  265. MultipartFile file = files[i];
  266. // 保存文件
  267. UploadResultBean bean = FileUtils.saveFile(request.getServletContext(), file, SAVE_MILK_IMAGE_PATH);
  268. if (bean == null) {
  269. // 文件有误
  270. return new Response(new ResponseHeader(4204, "文件有误!", -1));
  271. }
  272. filemap.put("file"+i,SAVE_MILK_IMAGE_DOMAIN + bean.getSaveFileName());
  273. }
  274. return SUCCESS.setData(filemap, filemap.size());
  275. }
  276. }