package cn.com.lzt.budget.data.controller; import cn.com.lzt.budget.control.entity.BudgetControlDetailEntity; import cn.com.lzt.budget.control.service.BudgetControlServiceI; import cn.com.lzt.budget.data.service.BudgetDataService; import cn.com.lzt.budget.measure.entity.BudgetMeasureEntity; import cn.com.lzt.common.util.DictUtil; import cn.com.lzt.goodscategory.entity.TBGoodsCategoryEntity; import cn.com.lzt.goodsinfo.entity.TBGoodsInfoEntity; import cn.com.lzt.priceinfo.entity.TBPriceInfoEntity; import cn.com.lzt.relatedunits.entity.RelatedUnitsEntity; import org.apache.commons.lang.xwork.StringUtils; import org.hibernate.criterion.Disjunction; import org.hibernate.criterion.Restrictions; import org.jeecgframework.core.common.exception.BusinessException; import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery; import org.jeecgframework.core.common.model.json.AjaxJson; import org.jeecgframework.core.common.model.json.DataGrid; import org.jeecgframework.core.constant.Globals; import org.jeecgframework.core.util.MyClassLoader; import org.jeecgframework.core.util.SendMailUtil; import org.jeecgframework.core.util.oConvertUtils; import org.jeecgframework.tag.core.easyui.TagUtil; import org.jeecgframework.web.system.pojo.base.TSDepart; import org.jeecgframework.web.system.service.SystemService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Collections; import java.util.List; import java.util.Map; @Controller @RequestMapping("/budgetDataController") public class BudgetDataController { @Autowired private SystemService systemService; @Autowired private BudgetDataService budgetDataService; @Autowired private BudgetControlServiceI budgetControlService; @RequestMapping(params = "selectReferGoods4Budget") public ModelAndView selectReferGoods4Budget(HttpServletRequest request) { ModelAndView mv = new ModelAndView("cn/com/lzt/budget/data/select-goodsInfo"); String ids = oConvertUtils.getString(request.getParameter("ids")); mv.addObject("ids", ids); // 需要将前端的类路径传递到refer页面 String clsname = oConvertUtils.getString(request.getParameter("classname")); mv.addObject("classname", clsname); mv.addObject("warehouseid", oConvertUtils.getString(request.getParameter("warehouseid"))); mv.addObject("codefield", oConvertUtils.getString(request.getParameter("codefield"))); mv.addObject("categoryfield",oConvertUtils.getString(request.getParameter("categoryfield"))); mv.addObject("categoryNamefield",oConvertUtils.getString(request.getParameter("categoryNamefield"))); mv.addObject("namefield", oConvertUtils.getString(request.getParameter("namefield"))); mv.addObject("purchaseUnit", oConvertUtils.getString(request.getParameter("purchaseUnit"))); mv.addObject("specification", oConvertUtils.getString(request.getParameter("specification"))); mv.addObject("goodsDesc", oConvertUtils.getString(request.getParameter("goodsDesc"))); mv.addObject("supplierName", oConvertUtils.getString(request.getParameter("supplierName"))); mv.addObject("strEmpty", oConvertUtils.getString(request.getParameter("strEmpty"))); return mv; } @SuppressWarnings("rawtypes") @RequestMapping(params = "selRefDatagridGoods") public void selRefDatagridGoods(String classname, TBGoodsInfoEntity tBGoodsInfoEntity, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception { String warehouseid = request.getParameter("warehouseid"); Class cls = MyClassLoader.getClassByScn(classname); CriteriaQuery cq = new CriteriaQuery(cls, dataGrid); //如果有仓库信息传入,则只查询此仓库有的货品 if(StringUtils.isNotEmpty(warehouseid)) { List goodsIDList = systemService.findListbySql("select goods_id from t_b_onhand where warehouse_id = '"+warehouseid+"' and quantity > 0"); if(goodsIDList.size() > 0) { cq.in("id", goodsIDList.toArray()); }else { cq.eq("id", "1"); } } //查询条件组装器 //自定义追加查询条件 String status = request.getParameter("status"); String[] unitstate; if(StringUtils.isNotBlank(status)){ unitstate = StringUtils.split(status,","); }else { unitstate = new String[]{Globals.Enable_Normal}; } cq.in("status", unitstate); cq.eq("deleteFlag", Globals.Delete_Normal.toString()); String initCategoryCodes = request.getParameter("initCategoryCode"); if(StringUtils.isNotBlank(initCategoryCodes)){ //模糊查询 String[] initCategoryCodesArray =initCategoryCodes.split(","); Disjunction dis = Restrictions.disjunction(); for(String initCategoryCode : initCategoryCodesArray){ dis.add(Restrictions.like("belongCategoryCode", initCategoryCode+"%" )); } cq.add(dis); } // 检索用货品分类编码 if(StringUtils.isNotBlank(tBGoodsInfoEntity.getBelongCategoryCode())){ //模糊查询 cq.like("belongCategoryCode", "%"+tBGoodsInfoEntity.getBelongCategoryCode()+"%"); } // 检索用货品名称 if(StringUtils.isNotBlank(tBGoodsInfoEntity.getGoodsName())){ //模糊查询 cq.like("goodsName", "%"+tBGoodsInfoEntity.getGoodsName()+"%"); } // 检索用货品名称 if(StringUtils.isNotBlank(tBGoodsInfoEntity.getSpecification())){ //模糊查询 cq.like("specification", "%"+tBGoodsInfoEntity.getSpecification()+"%"); } org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, cls.newInstance()); systemService.getDataGridReturn(cq, true); List result = dataGrid.getResults(); if(result != null && result.size() > 0){ Collections.sort(result); TBGoodsInfoEntity goodsInfoEntity = null; TBPriceInfoEntity tBPriceInfoEntity = null; for(int i = 0 ;i < result.size();i++){ goodsInfoEntity = (TBGoodsInfoEntity)result.get(i); if(StringUtils.isNotEmpty(goodsInfoEntity.getDefaultProvider()) && cq.getField().indexOf("supplierName") > -1) { RelatedUnitsEntity entity = systemService.get(RelatedUnitsEntity.class, goodsInfoEntity.getDefaultProvider()); if(entity != null) { goodsInfoEntity.setSupplierName(entity.getUnitName()); } } goodsInfoEntity.setGoodsDesc(""); //获取参数 Object id0 = goodsInfoEntity.getId(); String cateID = goodsInfoEntity.getBelongCategory(); TBGoodsCategoryEntity cate = systemService.get(TBGoodsCategoryEntity.class, cateID); goodsInfoEntity.setBelongCategoryName(dealCateName(cate.getCategoryCode(), cate.getCategoryName())); String hql0 = "from TBPriceInfoEntity where 1 = 1 AND GOODS_ID =? "; List tBPriceInfoEntityList = systemService.findHql(hql0,id0); if(tBPriceInfoEntityList != null && tBPriceInfoEntityList.size() > 0){ for(int j = 0 ;j < tBPriceInfoEntityList.size();j++){ tBPriceInfoEntity = new TBPriceInfoEntity(); tBPriceInfoEntity = tBPriceInfoEntityList.get(j); if(goodsInfoEntity.getPurchaseUnit()!= null && tBPriceInfoEntity.getMeteringUnit() != null && goodsInfoEntity.getPurchaseUnit().equals(tBPriceInfoEntity.getMeteringUnit())){ goodsInfoEntity.setCostPrice(tBPriceInfoEntity.getRetailPrice()); break; } } } } } try { //result =systemService.dealResultShowText4Entities(dataGrid.getResults(), cls); } catch (Exception e) { throw new BusinessException(e); } dataGrid.setResults(result); TagUtil.datagrid(response, dataGrid); } private String dealCateName(String categoryCode, String categoryName) { if(categoryCode.contains("rootA01")) { categoryName = "工程类-" + categoryName; }else if(categoryCode.contains("rootA02")) { categoryName = "保洁类-" + categoryName; }else if(categoryCode.contains("rootA03")) { categoryName = "办公类-" + categoryName; } return categoryName; } @RequestMapping(params = "selectClothing") public ModelAndView selectClothing(HttpServletRequest request) { ModelAndView mv = new ModelAndView("cn/com/lzt/budget/data/select-clothing"); return mv; } @SuppressWarnings("rawtypes") @RequestMapping(params = "selectClothingDatagrid") public void selectClothingDatagrid(HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception { TagUtil.datagrid(response, dataGrid); } /** * 获得预算编制数和执行数 * @param request * @param yearMonth * @param departId * @param measureId * @param busType * @param includeTax * @param expect * @return */ @RequestMapping(params = "getExpectActualValue") @ResponseBody public AjaxJson getExpectActualValue(HttpServletRequest request , @RequestParam("yearMonth") String yearMonth , @RequestParam("departId") String departId , @RequestParam("measureId") String measureId , @RequestParam("busType") String busType , @RequestParam(value = "updateId",required = false) String updateId , @RequestParam(value="includeTax",required = false,defaultValue = Globals.YES) Integer includeTax , @RequestParam(value="expect",required = false,defaultValue = Globals.YES) Integer expect ) { AjaxJson json = new AjaxJson(); Map map = budgetDataService.getExpectActualValueByBus(busType,updateId,yearMonth , departId,measureId,includeTax); json.setObj(map); return json; } @RequestMapping(params = "goOverBudgetTip") public ModelAndView goOverBudgetTip(HttpServletRequest request) { String measureId = request.getParameter("measureId"); BudgetMeasureEntity measureEntity = systemService.get(BudgetMeasureEntity.class, measureId); request.setAttribute("measureEntity", measureEntity); String departId = request.getParameter("departId"); String entityId = budgetDataService.findEntityByDepartId(departId); BudgetControlDetailEntity controlDetailEntity = budgetControlService.getBudgetControl(entityId,measureId); String controlPeriod = DictUtil.formatToTypeName(controlDetailEntity.getControlPeriod(),"budget_control_period"); request.setAttribute("controlPeriod",controlPeriod ); ModelAndView mv = new ModelAndView("cn/com/lzt/budget/data/over-budget-tip"); return mv; } @RequestMapping(params = "doOverBudgetTip") @ResponseBody public AjaxJson doOverBudgetTip(HttpServletRequest request) { AjaxJson j = new AjaxJson(); String to="zhengying99@dingshantech.com"; String departId = request.getParameter("departId"); String measureId = request.getParameter("measureId"); String expectValue = request.getParameter("expectValue"); String actualValue = request.getParameter("actualValue"); String baseLeft = request.getParameter("baseLeft"); String money = request.getParameter("money"); String budgetMonth = request.getParameter("budgetMonth"); String txt = request.getParameter("txt"); TSDepart depart = systemService.get(TSDepart.class, departId); BudgetMeasureEntity measureEntity = systemService.get(BudgetMeasureEntity.class, measureId); String entityId = budgetDataService.findEntityByDepartId(departId); BudgetControlDetailEntity controlDetailEntity = budgetControlService.getBudgetControl(entityId,measureId); String controlPeriod = DictUtil.formatToTypeName(controlDetailEntity.getControlPeriod(),"budget_control_period"); String subject=depart.getGlcName()+"预算调整申请"; String messsage = "周长丽你好,\n" + "\n" + "\n" + "“%s”现申请调整预算额度,详情如下。\n" + "预算指标:%s\n" + "已配置预算:%s\n" + "控制方式:%s\n" + "剩余额度:%s\n" + "申请增加金额:%s\n" + "费用发生月份:%s\n" + "申请理由:%s\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "慧管理平台\n"; messsage = String.format(messsage,depart.getGlcName(),measureEntity.getName(),expectValue,controlPeriod, baseLeft,money,budgetMonth,txt ); SendMailUtil.sendCommonMail(to, subject, messsage); String logMsg = "overBudgetTip: to :"+to+","+messsage; systemService.addLog(logMsg, Globals.Log_Type_OTHER, Globals.Log_Leavel_INFO); return j; } }