BudgetDataController.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. package cn.com.lzt.budget.data.controller;
  2. import cn.com.lzt.budget.control.entity.BudgetControlDetailEntity;
  3. import cn.com.lzt.budget.control.service.BudgetControlServiceI;
  4. import cn.com.lzt.budget.data.service.BudgetDataService;
  5. import cn.com.lzt.budget.measure.entity.BudgetMeasureEntity;
  6. import cn.com.lzt.common.util.DictUtil;
  7. import cn.com.lzt.goodscategory.entity.TBGoodsCategoryEntity;
  8. import cn.com.lzt.goodsinfo.entity.TBGoodsInfoEntity;
  9. import cn.com.lzt.priceinfo.entity.TBPriceInfoEntity;
  10. import cn.com.lzt.relatedunits.entity.RelatedUnitsEntity;
  11. import org.apache.commons.lang.xwork.StringUtils;
  12. import org.hibernate.criterion.Disjunction;
  13. import org.hibernate.criterion.Restrictions;
  14. import org.jeecgframework.core.common.exception.BusinessException;
  15. import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
  16. import org.jeecgframework.core.common.model.json.AjaxJson;
  17. import org.jeecgframework.core.common.model.json.DataGrid;
  18. import org.jeecgframework.core.constant.Globals;
  19. import org.jeecgframework.core.util.MyClassLoader;
  20. import org.jeecgframework.core.util.SendMailUtil;
  21. import org.jeecgframework.core.util.oConvertUtils;
  22. import org.jeecgframework.tag.core.easyui.TagUtil;
  23. import org.jeecgframework.web.system.pojo.base.TSDepart;
  24. import org.jeecgframework.web.system.service.SystemService;
  25. import org.springframework.beans.factory.annotation.Autowired;
  26. import org.springframework.stereotype.Controller;
  27. import org.springframework.web.bind.annotation.RequestMapping;
  28. import org.springframework.web.bind.annotation.RequestParam;
  29. import org.springframework.web.bind.annotation.ResponseBody;
  30. import org.springframework.web.servlet.ModelAndView;
  31. import javax.servlet.http.HttpServletRequest;
  32. import javax.servlet.http.HttpServletResponse;
  33. import java.util.Collections;
  34. import java.util.List;
  35. import java.util.Map;
  36. @Controller
  37. @RequestMapping("/budgetDataController")
  38. public class BudgetDataController {
  39. @Autowired
  40. private SystemService systemService;
  41. @Autowired
  42. private BudgetDataService budgetDataService;
  43. @Autowired
  44. private BudgetControlServiceI budgetControlService;
  45. @RequestMapping(params = "selectReferGoods4Budget")
  46. public ModelAndView selectReferGoods4Budget(HttpServletRequest request) {
  47. ModelAndView mv = new ModelAndView("cn/com/lzt/budget/data/select-goodsInfo");
  48. String ids = oConvertUtils.getString(request.getParameter("ids"));
  49. mv.addObject("ids", ids);
  50. // 需要将前端的类路径传递到refer页面
  51. String clsname = oConvertUtils.getString(request.getParameter("classname"));
  52. mv.addObject("classname", clsname);
  53. mv.addObject("warehouseid", oConvertUtils.getString(request.getParameter("warehouseid")));
  54. mv.addObject("codefield", oConvertUtils.getString(request.getParameter("codefield")));
  55. mv.addObject("categoryfield",oConvertUtils.getString(request.getParameter("categoryfield")));
  56. mv.addObject("categoryNamefield",oConvertUtils.getString(request.getParameter("categoryNamefield")));
  57. mv.addObject("namefield", oConvertUtils.getString(request.getParameter("namefield")));
  58. mv.addObject("purchaseUnit", oConvertUtils.getString(request.getParameter("purchaseUnit")));
  59. mv.addObject("specification", oConvertUtils.getString(request.getParameter("specification")));
  60. mv.addObject("goodsDesc", oConvertUtils.getString(request.getParameter("goodsDesc")));
  61. mv.addObject("supplierName", oConvertUtils.getString(request.getParameter("supplierName")));
  62. mv.addObject("strEmpty", oConvertUtils.getString(request.getParameter("strEmpty")));
  63. return mv;
  64. }
  65. @SuppressWarnings("rawtypes")
  66. @RequestMapping(params = "selRefDatagridGoods")
  67. public void selRefDatagridGoods(String classname, TBGoodsInfoEntity tBGoodsInfoEntity, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception {
  68. String warehouseid = request.getParameter("warehouseid");
  69. Class cls = MyClassLoader.getClassByScn(classname);
  70. CriteriaQuery cq = new CriteriaQuery(cls, dataGrid);
  71. //如果有仓库信息传入,则只查询此仓库有的货品
  72. if(StringUtils.isNotEmpty(warehouseid)) {
  73. List<String> goodsIDList = systemService.findListbySql("select goods_id from t_b_onhand where warehouse_id = '"+warehouseid+"' and quantity > 0");
  74. if(goodsIDList.size() > 0) {
  75. cq.in("id", goodsIDList.toArray());
  76. }else {
  77. cq.eq("id", "1");
  78. }
  79. }
  80. //查询条件组装器
  81. //自定义追加查询条件
  82. String status = request.getParameter("status");
  83. String[] unitstate;
  84. if(StringUtils.isNotBlank(status)){
  85. unitstate = StringUtils.split(status,",");
  86. }else {
  87. unitstate = new String[]{Globals.Enable_Normal};
  88. }
  89. cq.in("status", unitstate);
  90. cq.eq("deleteFlag", Globals.Delete_Normal.toString());
  91. String initCategoryCodes = request.getParameter("initCategoryCode");
  92. if(StringUtils.isNotBlank(initCategoryCodes)){
  93. //模糊查询
  94. String[] initCategoryCodesArray =initCategoryCodes.split(",");
  95. Disjunction dis = Restrictions.disjunction();
  96. for(String initCategoryCode : initCategoryCodesArray){
  97. dis.add(Restrictions.like("belongCategoryCode", initCategoryCode+"%" ));
  98. }
  99. cq.add(dis);
  100. }
  101. // 检索用货品分类编码
  102. if(StringUtils.isNotBlank(tBGoodsInfoEntity.getBelongCategoryCode())){
  103. //模糊查询
  104. cq.like("belongCategoryCode", "%"+tBGoodsInfoEntity.getBelongCategoryCode()+"%");
  105. }
  106. // 检索用货品名称
  107. if(StringUtils.isNotBlank(tBGoodsInfoEntity.getGoodsName())){
  108. //模糊查询
  109. cq.like("goodsName", "%"+tBGoodsInfoEntity.getGoodsName()+"%");
  110. }
  111. // 检索用货品名称
  112. if(StringUtils.isNotBlank(tBGoodsInfoEntity.getSpecification())){
  113. //模糊查询
  114. cq.like("specification", "%"+tBGoodsInfoEntity.getSpecification()+"%");
  115. }
  116. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, cls.newInstance());
  117. systemService.getDataGridReturn(cq, true);
  118. List result = dataGrid.getResults();
  119. if(result != null && result.size() > 0){
  120. Collections.sort(result);
  121. TBGoodsInfoEntity goodsInfoEntity = null;
  122. TBPriceInfoEntity tBPriceInfoEntity = null;
  123. for(int i = 0 ;i < result.size();i++){
  124. goodsInfoEntity = (TBGoodsInfoEntity)result.get(i);
  125. if(StringUtils.isNotEmpty(goodsInfoEntity.getDefaultProvider()) && cq.getField().indexOf("supplierName") > -1) {
  126. RelatedUnitsEntity entity = systemService.get(RelatedUnitsEntity.class, goodsInfoEntity.getDefaultProvider());
  127. if(entity != null) {
  128. goodsInfoEntity.setSupplierName(entity.getUnitName());
  129. }
  130. }
  131. goodsInfoEntity.setGoodsDesc("");
  132. //获取参数
  133. Object id0 = goodsInfoEntity.getId();
  134. String cateID = goodsInfoEntity.getBelongCategory();
  135. TBGoodsCategoryEntity cate = systemService.get(TBGoodsCategoryEntity.class, cateID);
  136. goodsInfoEntity.setBelongCategoryName(dealCateName(cate.getCategoryCode(), cate.getCategoryName()));
  137. String hql0 = "from TBPriceInfoEntity where 1 = 1 AND GOODS_ID =? ";
  138. List<TBPriceInfoEntity> tBPriceInfoEntityList = systemService.findHql(hql0,id0);
  139. if(tBPriceInfoEntityList != null && tBPriceInfoEntityList.size() > 0){
  140. for(int j = 0 ;j < tBPriceInfoEntityList.size();j++){
  141. tBPriceInfoEntity = new TBPriceInfoEntity();
  142. tBPriceInfoEntity = tBPriceInfoEntityList.get(j);
  143. if(goodsInfoEntity.getPurchaseUnit()!= null && tBPriceInfoEntity.getMeteringUnit() != null && goodsInfoEntity.getPurchaseUnit().equals(tBPriceInfoEntity.getMeteringUnit())){
  144. goodsInfoEntity.setCostPrice(tBPriceInfoEntity.getRetailPrice());
  145. break;
  146. }
  147. }
  148. }
  149. }
  150. }
  151. try {
  152. //result =systemService.dealResultShowText4Entities(dataGrid.getResults(), cls);
  153. } catch (Exception e) {
  154. throw new BusinessException(e);
  155. }
  156. dataGrid.setResults(result);
  157. TagUtil.datagrid(response, dataGrid);
  158. }
  159. private String dealCateName(String categoryCode, String categoryName) {
  160. if(categoryCode.contains("rootA01")) {
  161. categoryName = "工程类-" + categoryName;
  162. }else if(categoryCode.contains("rootA02")) {
  163. categoryName = "保洁类-" + categoryName;
  164. }else if(categoryCode.contains("rootA03")) {
  165. categoryName = "办公类-" + categoryName;
  166. }
  167. return categoryName;
  168. }
  169. @RequestMapping(params = "selectClothing")
  170. public ModelAndView selectClothing(HttpServletRequest request) {
  171. ModelAndView mv = new ModelAndView("cn/com/lzt/budget/data/select-clothing");
  172. return mv;
  173. }
  174. @SuppressWarnings("rawtypes")
  175. @RequestMapping(params = "selectClothingDatagrid")
  176. public void selectClothingDatagrid(HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception {
  177. TagUtil.datagrid(response, dataGrid);
  178. }
  179. /**
  180. * 获得预算编制数和执行数
  181. * @param request
  182. * @param yearMonth
  183. * @param departId
  184. * @param measureId
  185. * @param busType
  186. * @param includeTax
  187. * @param expect
  188. * @return
  189. */
  190. @RequestMapping(params = "getExpectActualValue")
  191. @ResponseBody
  192. public AjaxJson getExpectActualValue(HttpServletRequest request
  193. , @RequestParam("yearMonth") String yearMonth
  194. , @RequestParam("departId") String departId
  195. , @RequestParam("measureId") String measureId
  196. , @RequestParam("busType") String busType
  197. , @RequestParam(value = "updateId",required = false) String updateId
  198. , @RequestParam(value="includeTax",required = false,defaultValue = Globals.YES) Integer includeTax
  199. , @RequestParam(value="expect",required = false,defaultValue = Globals.YES) Integer expect
  200. ) {
  201. AjaxJson json = new AjaxJson();
  202. Map<String,Object> map = budgetDataService.getExpectActualValueByBus(busType,updateId,yearMonth , departId,measureId,includeTax);
  203. json.setObj(map);
  204. return json;
  205. }
  206. @RequestMapping(params = "goOverBudgetTip")
  207. public ModelAndView goOverBudgetTip(HttpServletRequest request) {
  208. String measureId = request.getParameter("measureId");
  209. BudgetMeasureEntity measureEntity = systemService.get(BudgetMeasureEntity.class, measureId);
  210. request.setAttribute("measureEntity", measureEntity);
  211. String departId = request.getParameter("departId");
  212. String entityId = budgetDataService.findEntityByDepartId(departId);
  213. BudgetControlDetailEntity controlDetailEntity = budgetControlService.getBudgetControl(entityId,measureId);
  214. String controlPeriod = DictUtil.formatToTypeName(controlDetailEntity.getControlPeriod(),"budget_control_period");
  215. request.setAttribute("controlPeriod",controlPeriod );
  216. ModelAndView mv = new ModelAndView("cn/com/lzt/budget/data/over-budget-tip");
  217. return mv;
  218. }
  219. @RequestMapping(params = "doOverBudgetTip")
  220. @ResponseBody
  221. public AjaxJson doOverBudgetTip(HttpServletRequest request) {
  222. AjaxJson j = new AjaxJson();
  223. String to="zhengying99@dingshantech.com";
  224. String departId = request.getParameter("departId");
  225. String measureId = request.getParameter("measureId");
  226. String expectValue = request.getParameter("expectValue");
  227. String actualValue = request.getParameter("actualValue");
  228. String baseLeft = request.getParameter("baseLeft");
  229. String money = request.getParameter("money");
  230. String budgetMonth = request.getParameter("budgetMonth");
  231. String txt = request.getParameter("txt");
  232. TSDepart depart = systemService.get(TSDepart.class, departId);
  233. BudgetMeasureEntity measureEntity = systemService.get(BudgetMeasureEntity.class, measureId);
  234. String entityId = budgetDataService.findEntityByDepartId(departId);
  235. BudgetControlDetailEntity controlDetailEntity = budgetControlService.getBudgetControl(entityId,measureId);
  236. String controlPeriod = DictUtil.formatToTypeName(controlDetailEntity.getControlPeriod(),"budget_control_period");
  237. String subject=depart.getGlcName()+"预算调整申请";
  238. String messsage = "周长丽你好,\n" +
  239. "\n" +
  240. "\n" +
  241. "“%s”现申请调整预算额度,详情如下。\n" +
  242. "预算指标:%s\n" +
  243. "已配置预算:%s\n" +
  244. "控制方式:%s\n" +
  245. "剩余额度:%s\n" +
  246. "申请增加金额:%s\n" +
  247. "费用发生月份:%s\n" +
  248. "申请理由:%s\n" +
  249. "\n" +
  250. "\n" +
  251. "\n" +
  252. "\n" +
  253. "\n" +
  254. "\n" +
  255. "慧管理平台\n";
  256. messsage = String.format(messsage,depart.getGlcName(),measureEntity.getName(),expectValue,controlPeriod,
  257. baseLeft,money,budgetMonth,txt );
  258. SendMailUtil.sendCommonMail(to, subject, messsage);
  259. String logMsg = "overBudgetTip: to :"+to+","+messsage;
  260. systemService.addLog(logMsg, Globals.Log_Type_OTHER, Globals.Log_Leavel_INFO);
  261. return j;
  262. }
  263. }