TRmBalanceValueController.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. package com.steerinfo.ems.trmbalancevalue.controller;
  2. import com.steerinfo.auth.utils.JwtUtil;
  3. import com.steerinfo.ems.Utils.BigDecimalUtil;
  4. import com.steerinfo.ems.Utils.DateUtils;
  5. import com.steerinfo.ems.trmactitem.model.TRmActItem;
  6. import com.steerinfo.ems.trmactitem.service.ITRmActItemService;
  7. import com.steerinfo.ems.trmactvalue.model.TRmActValue;
  8. import com.steerinfo.ems.trmworkprocproductvalue.controller.TRmWorkprocProductValueController;
  9. import com.steerinfo.ems.trmworkprocproductvalue.service.ITRmWorkprocProductValueService;
  10. import com.steerinfo.framework.controller.BaseRESTfulController;
  11. import com.steerinfo.framework.controller.RESTfulResult;
  12. import com.steerinfo.framework.service.pagehelper.PageList;
  13. import com.steerinfo.ems.trmbalancevalue.model.TRmBalanceValue;
  14. import com.steerinfo.ems.trmbalancevalue.service.ITRmBalanceValueService;
  15. import io.swagger.annotations.ApiImplicitParam;
  16. import io.swagger.annotations.ApiImplicitParams;
  17. import io.swagger.annotations.ApiOperation;
  18. import org.apache.commons.lang3.StringUtils;
  19. import org.apache.shiro.authz.annotation.RequiresPermissions;
  20. import org.slf4j.Logger;
  21. import org.slf4j.LoggerFactory;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.web.bind.annotation.*;
  24. import java.math.BigDecimal;
  25. import java.util.*;
  26. /**
  27. * TRmBalanceValue RESTful接口:
  28. * @author generator
  29. * @version 1.0-SNAPSHORT 2019-10-17 04:39
  30. * 类描述
  31. * 修订历史:
  32. * 日期:2019-10-17
  33. * 作者:generator
  34. * 参考:
  35. * 描述:TRmBalanceValue RESTful接口
  36. * @see null
  37. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  38. */
  39. @RestController
  40. @RequestMapping("/${api.version}/trmbalancevalues")
  41. public class TRmBalanceValueController extends BaseRESTfulController {
  42. private static final Logger logger = LoggerFactory.getLogger(TRmWorkprocProductValueController.class);
  43. @Autowired
  44. ITRmBalanceValueService tRmBalanceValueService;
  45. @Autowired
  46. private ITRmWorkprocProductValueService tRmWorkprocProductValueService;
  47. @Autowired
  48. ITRmActItemService tRmActItemService;
  49. @ApiOperation(value="获取列表", notes="分页查询")
  50. @ApiImplicitParams({
  51. @ApiImplicitParam(name = "pageNum", value = "查询页数", required = false, dataType = "Integer"),
  52. @ApiImplicitParam(name = "pageSize", value = "每页记录数", required = false, dataType = "Integer")
  53. })
  54. //@RequiresPermissions("trmbalancevalue:view")
  55. @GetMapping(value = "/")
  56. public RESTfulResult list(@RequestParam HashMap parmas,Integer pageNum, Integer pageSize){
  57. PageList<TRmBalanceValue> list = tRmBalanceValueService.queryForPage(parmas, pageNum, pageSize);
  58. return success(list);
  59. }
  60. @ApiOperation(value="获取列表", notes="分页模糊查询")
  61. @ApiImplicitParams({
  62. @ApiImplicitParam(name = "pageNum", value = "查询页数", required = false, dataType = "Integer"),
  63. @ApiImplicitParam(name = "pageSize", value = "每页记录数", required = false, dataType = "Integer")
  64. })
  65. //@RequiresPermissions("trmbalancevalue:view")
  66. @GetMapping(value = "/like/")
  67. public RESTfulResult listLike(@RequestParam HashMap parmas,Integer pageNum, Integer pageSize){
  68. PageList<TRmBalanceValue> list = tRmBalanceValueService.queryLikeForPage(parmas, pageNum, pageSize);
  69. return success(list);
  70. }
  71. @ApiOperation(value="创建", notes="根据TRmBalanceValue对象创建")
  72. @ApiImplicitParam(name = "tRmBalanceValue", value = "详细实体tRmBalanceValue", required = true, dataType = "TRmBalanceValue")
  73. //@RequiresPermissions("trmbalancevalue:create")
  74. @PostMapping(value = "/")
  75. public RESTfulResult add(@ModelAttribute TRmBalanceValue model){
  76. TRmBalanceValue tRmBalanceValue = tRmBalanceValueService.add(model);
  77. return success(tRmBalanceValue);
  78. }
  79. @ApiOperation(value="获取详细信息", notes="根据url的id来获取详细信息")
  80. @ApiImplicitParam(paramType = "path", name = "id", value = "ID", required = true, dataType = "String")
  81. //@RequiresPermissions("trmbalancevalue:view")
  82. @PostMapping(value = "/info", produces = "application/json;charset=UTF-8")
  83. public RESTfulResult get(@RequestBody TRmBalanceValue model){
  84. if(model.getClock() == null || model.getClock().isEmpty()){
  85. return failed(null, "请传入时间");
  86. }
  87. if(model.getTimegranid() == null || model.getTimegranid().isEmpty()){
  88. return failed(null, "请传入时间粒度");
  89. }
  90. if(model.getItemid() == null || model.getItemid().isEmpty()){
  91. return failed(null, "请传入项目编号");
  92. }
  93. HashMap<String, Object> m = new HashMap<String, Object>();
  94. m.put("clock", model.getClock());
  95. m.put("timegranid", model.getTimegranid());
  96. m.put("itemid", model.getItemid());
  97. model.setId(m);
  98. TRmBalanceValue tRmBalanceValue = tRmBalanceValueService.getById(m);
  99. return success(tRmBalanceValue);
  100. }
  101. @ApiOperation(value="更新详细信息", notes="根据主键(itemid, clock, timegranid)来指定更新对象,并根据传过来的tRmBalanceValue信息来更新详细信息")
  102. @ApiImplicitParams({
  103. @ApiImplicitParam(name = "tRmBalanceValue", value = "详细实体tRmBalanceValue", required = true, dataType = "TRmBalanceValue")
  104. })
  105. //@RequiresPermissions("trmbalancevalue:update")
  106. @PutMapping(value = "/updateForUKey/", produces = "application/json;charset=UTF-8")
  107. public RESTfulResult update(@RequestBody TRmBalanceValue model){
  108. if (model == null) {
  109. return failed(null, "请传入主键参数");
  110. }
  111. if (model.getItemid()== null || model.getItemid().isEmpty()) {
  112. return failed(null, "请传入主键参数itemid");
  113. }
  114. if (model.getClock() == null || model.getClock().isEmpty()) {
  115. return failed(null, "请传入主键参数clock");
  116. }
  117. if (model.getTimegranid() == null || model.getTimegranid().isEmpty()) {
  118. return failed(null, "请传入主键参数timegranid");
  119. }
  120. TRmBalanceValue tRmBalanceValue = tRmBalanceValueService.updateForUKey(model);
  121. return success(tRmBalanceValue);
  122. }
  123. @ApiOperation(value="删除", notes="根据url的id来指定删除对象")
  124. @ApiImplicitParam(paramType = "path", name = "id", value = "ID", required = true, dataType = "String")
  125. //@RequiresPermissions("trmbalancevalue:delete")
  126. @DeleteMapping(value = "/delete", produces = "application/json;charset=UTF-8")
  127. public RESTfulResult delete(@RequestBody TRmBalanceValue model){
  128. if(model.getClock() == null || model.getClock().isEmpty()){
  129. return failed(null, "请传入时间");
  130. }
  131. if(model.getTimegranid() == null || model.getTimegranid().isEmpty()){
  132. return failed(null, "请传入时间粒度");
  133. }
  134. if(model.getItemid() == null || model.getItemid().isEmpty()){
  135. return failed(null, "请传入项目编号");
  136. }
  137. HashMap<String, Object> m = new HashMap<String, Object>();
  138. m.put("clock", model.getClock());
  139. m.put("timegranid", model.getTimegranid());
  140. m.put("itemid", model.getItemid());
  141. model.setId(m);
  142. tRmBalanceValueService.delete(m);
  143. return success();
  144. }
  145. @ApiOperation(value="获得平衡表数据维护数据", notes="能源平衡管理-左边窗口查询")
  146. @ApiImplicitParams({
  147. @ApiImplicitParam(name = "pageNum", value = "查询页数", required = false, dataType = "Integer"),
  148. @ApiImplicitParam(name = "pageSize", value = "每页记录数", required = false, dataType = "Integer")
  149. })
  150. @GetMapping(value = "/getBalanceitemForPage")
  151. public RESTfulResult getBalanceitemForPage(@RequestParam HashMap parmas,Integer pageNum, Integer pageSize){
  152. PageList<Map> list = tRmBalanceValueService.getBalanceitemForPage(parmas, pageNum, pageSize);
  153. return success(list);
  154. }
  155. @ApiOperation(value="获得平衡表数据维护数据", notes="能源平衡管理-右边窗口查询")
  156. @ApiImplicitParams({
  157. @ApiImplicitParam(name = "pageNum", value = "查询页数", required = false, dataType = "Integer"),
  158. @ApiImplicitParam(name = "pageSize", value = "每页记录数", required = false, dataType = "Integer")
  159. })
  160. @GetMapping("/getBalanceitemList")
  161. public RESTfulResult getBalanceitemList(@RequestParam HashMap parmas){
  162. List balanceitemList = tRmBalanceValueService.getBalanceitemList(parmas);
  163. return success(balanceitemList);
  164. }
  165. @ApiOperation(value="批量更新详细信息", notes="根据传过来的usageData数组信息来更新详细信息")
  166. @ApiImplicitParam(name = "trmbalancevalue", value = "详细实体trmbalancevalue", required = true, dataType = "trmbalancevalue")
  167. @PutMapping(value = "/batchUpdate", produces = "application/json;charset=UTF-8")
  168. public RESTfulResult batchupdate(@RequestBody TRmBalanceValue[] model){
  169. int failnum = 0;
  170. // ArrayList<String> failmsgs = new ArrayList<String>();
  171. String userId = JwtUtil.getUseridByToken();
  172. for(int i = 0;i < model.length;i++){
  173. TRmActItem ta = tRmActItemService.getById(model[i].getItemid());
  174. if(ta == null){
  175. return failed(null,"项目不存在");
  176. }
  177. HashMap<String, Object> m = new HashMap<String, Object>();
  178. m.put("clock", model[i].getClock());
  179. m.put("timegranid", model[i].getTimegranid());
  180. m.put("itemid", model[i].getItemid());
  181. TRmBalanceValue t = tRmBalanceValueService.getById(m);
  182. if (t == null) {
  183. failnum++;
  184. logger.error("主键(id:" + model[i].getItemid() + "时间粒度:" + model[i].getTimegranid() + "时间:" + model[i].getClock() + ")修改对象不存在");
  185. continue;
  186. }
  187. if (model[i].getApportvalue() == null) {
  188. failnum++;
  189. logger.error("主键(id:" + model[i].getItemid() + "时间粒度:" + model[i].getTimegranid() + "时间:" + model[i].getClock() + ")数据请传入最终值");
  190. continue;
  191. }
  192. if (model[i].getActualvalue() == null) {
  193. failnum++;
  194. logger.error("主键(id:" + model[i].getItemid() + "时间粒度:" + model[i].getTimegranid() + "时间:" + model[i].getClock() + ")数据请传入计算值");
  195. continue;
  196. }
  197. if (model[i].getCorrectvalue() == null) {
  198. failnum++;
  199. logger.error("主键(id:" + model[i].getItemid() + "时间粒度:" + model[i].getTimegranid() + "时间:" + model[i].getClock() + ")数据请传入修正值");
  200. continue;
  201. }
  202. if (model[i].getActualvalue().compareTo(t.getActualvalue()) != 0) {
  203. failnum++;
  204. logger.error("主键(id:" + model[i].getItemid() + "时间粒度:" + model[i].getTimegranid() + "时间:" + model[i].getClock() + ")计算值不能修改");
  205. continue;
  206. }
  207. if (model[i].getActualvalue().add(model[i].getCorrectvalue()).compareTo(model[i].getApportvalue()) != 0) {
  208. failnum++;
  209. logger.error("主键(id:" + model[i].getItemid() + "时间粒度:" + model[i].getTimegranid() + "时间:" + model[i].getClock() + ")数据数值错误,最终值 = 计算值 + 修正值");
  210. continue;
  211. }
  212. try{
  213. logger.info("修改前数据是" + t.toString());
  214. t.setUserid(userId);
  215. t.setUptime(DateUtils.dateStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
  216. t.setApportvalue(model[i].getApportvalue());
  217. t.setCorrectvalue(model[i].getCorrectvalue());
  218. Map<String, BigDecimal> dh = tRmWorkprocProductValueService.getOutPut(ta.getWorkprocid(), model[i].getClock(), model[i].getTimegranid(), "R");
  219. //实绩产量
  220. Double sjcl = dh.get("SJCL").doubleValue();
  221. //单耗值
  222. t.setUcvalue(BigDecimalUtil.divide(t.getApportvalue().doubleValue(), sjcl, ta.getDigits()==null?2:ta.getDigits().intValue()));
  223. tRmBalanceValueService.modify(t);
  224. } catch (Exception e){
  225. failnum++;
  226. //failmsgs.add(m.toString());
  227. logger.error("T_RM_Balance_VALUE表的数据修改出现错误,错误原因是" + e + ",id是" + m.toString());
  228. }
  229. }
  230. if(failnum > 0){
  231. logger.info("本次共修改" + model.length + "条数据,其中成功" + (model.length - failnum) + "条,失败" + failnum + "条");
  232. return success("51","本次共修改" + model.length + "条数据,其中成功" + (model.length - failnum) + "条,失败" + failnum + "条");
  233. }
  234. return success();
  235. }
  236. @ApiOperation(value="批量重新计算", notes="根据url的id来指定更新对象,并根据传过来的TRmActValue信息来更新详细信息")
  237. @ApiImplicitParam(name = "TRmBalanceValue", value = "详细实体TRmBalanceValue", required = true, dataType = "TRmBalanceValue")
  238. @PutMapping(value = "/batchCompute", produces = "application/json;charset=UTF-8")
  239. public RESTfulResult batchCompute(@RequestBody TRmBalanceValue[] model){
  240. if(model.length<1){
  241. return failed(null, "请勾选数据");
  242. }
  243. for (int i = 0; i< model.length; i++) {
  244. TRmBalanceValue tv = model[i];
  245. tRmBalanceValueService.restatData(tv.getItemid(), tv.getClock(), tv.getTimegranid());
  246. }
  247. return success();
  248. }
  249. @GetMapping("/getitem")
  250. public RESTfulResult getitem(@RequestParam HashMap<String,Object> parmas) {
  251. List<Map<String, Object>> item = tRmBalanceValueService.getItem(parmas);
  252. return success(item);
  253. }
  254. @GetMapping("/aaaa")
  255. public RESTfulResult aaa() {
  256. tRmBalanceValueService.state();
  257. return success();
  258. }
  259. }