package cn.com.lzt.purchase.controller; import java.beans.PropertyDescriptor; import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.math.RoundingMode; import java.net.URI; import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.validation.ConstraintViolation; import javax.validation.Validator; import cn.com.lzt.common.util.LztUtil; import cn.com.lzt.common.view.JsonDataModelAndView; import cn.com.lzt.useractiviti.data.util.ActivitiTools; import com.jeecg.qianbao.util.FormProcUtil; import com.xcgl.weixin.entity.WXAjaxJson; import org.apache.commons.lang.xwork.StringUtils; import org.apache.log4j.Logger; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Workbook; import org.jeecgframework.core.beanvalidator.BeanValidators; import org.jeecgframework.core.common.controller.BaseController; import org.jeecgframework.core.common.dao.ICommonDao; 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.ContextHolderUtils; import org.jeecgframework.core.util.DateUtils; import org.jeecgframework.core.util.ExceptionUtil; import org.jeecgframework.core.util.MyBeanUtils; import org.jeecgframework.core.util.MyClassLoader; import org.jeecgframework.core.util.ResourceUtil; import org.jeecgframework.core.util.StringUtil; import org.jeecgframework.core.util.oConvertUtils; import org.jeecgframework.poi.excel.ExcelExportUtil; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.entity.TemplateExportParams; import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants; import org.jeecgframework.poi.excel.export.styler.ExcelExportStylerBorderImpl; import org.jeecgframework.tag.core.easyui.TagUtil; import org.jeecgframework.tag.vo.datatable.SortDirection; import org.jeecgframework.web.system.dao.JeecgDictDao; import org.jeecgframework.web.system.pojo.base.DictEntity; import org.jeecgframework.web.system.pojo.base.TSBaseUser; import org.jeecgframework.web.system.pojo.base.TSDepart; import org.jeecgframework.web.system.pojo.base.TSUser; import org.jeecgframework.web.system.service.SystemService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.util.UriComponentsBuilder; import cn.com.lzt.clothing.base.entity.TBClothingRelatedUnitPriceEntity; import cn.com.lzt.common.util.OrdersExcelExportOfTemplateUtil; import cn.com.lzt.goodscategory.entity.TBGoodsCategoryEntity; import cn.com.lzt.goodsinfo.entity.TBGoodsInfoEntity; import cn.com.lzt.goodsinfo.entity.TBGoodsRelatedUnitPriceEntity; import cn.com.lzt.logistics.entity.TBLogisticsEntity; import cn.com.lzt.orders.entity.OrderMonthsEntity; import cn.com.lzt.orders.entity.OrdersEntity; import cn.com.lzt.ordersfixasset.entity.OrderFixAssetProductsEntity; import cn.com.lzt.ordersfixasset.entity.OrdersFixAssetEntity; import cn.com.lzt.ordersfixasset.page.OrdersFixAssetPage; import cn.com.lzt.priceinfo.entity.TBPriceInfoEntity; import cn.com.lzt.purchase.dao.POrderDao; import cn.com.lzt.purchase.dto.GoodsCode; import cn.com.lzt.purchase.dto.OrderToDeliverListDto; import cn.com.lzt.purchase.dto.OrderToLeyiDto; import cn.com.lzt.purchase.dto.OrderToQingyuDto; import cn.com.lzt.purchase.dto.OrderToSupplierAllGoodsDto; import cn.com.lzt.purchase.dto.OrderToSupplierDto; import cn.com.lzt.purchase.dto.OrderToYunjieDto; import cn.com.lzt.purchase.entity.POrdersEntity; import cn.com.lzt.purchase.page.POrdersPage; import cn.com.lzt.purchase.service.POrdersServiceI; import cn.com.lzt.purchasedetails.entity.OrderDetailsEntity; import cn.com.lzt.relatedunits.entity.RelatedUnitsEntity; import cn.com.lzt.relatedunits.service.RelatedUnitsServiceI; import cn.com.lzt.tools.OrderNumTools; import cn.com.lzt.warehouse.entity.WarehouseEntity; /** * @Title: Controller * @Description: 订单表 * @author onlineGenerator * @date 2017-06-07 17:15:24 * @version V1.0 * */ @Controller @RequestMapping("/pOrdersController") public class POrdersController extends BaseController { /** * Logger for this class */ private static final Logger logger = Logger.getLogger(POrdersController.class); @Autowired private POrdersServiceI ordersService; @Autowired private SystemService systemService; @Autowired private Validator validator; @Autowired public ICommonDao commonDao = null; // @Autowired // private PaymentMiddleServiceI paymentMiddleService; @Autowired private RelatedUnitsServiceI relatedUnitsService; @Autowired private POrdersServiceI pordersServiceI; @Autowired private POrderDao porderDao; @Autowired private JeecgDictDao jeecgDictDao; /** * 订单表列表 页面跳转 * * @return */ @RequestMapping(params = "list") public ModelAndView list(HttpServletRequest request) { return new ModelAndView("cn/com/lzt/purchase/ordersList"); } @RequestMapping(params = "selectQGD") public ModelAndView selectQGD(HttpServletRequest request) { ModelAndView mv = new ModelAndView("cn/com/lzt/purchase/selectQGDInfo"); 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("codefield", oConvertUtils.getString(request.getParameter("codefield"))); mv.addObject("namefield", oConvertUtils.getString(request.getParameter("namefield"))); return mv; } /** * easyui AJAX请求数据 * * @param request * @param response * @param dataGrid * @param user */ @RequestMapping(params = "datagrid") public void datagrid(POrdersEntity orders,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { CriteriaQuery cq = new CriteriaQuery(POrdersEntity.class, dataGrid); String orderDateBegin = request.getParameter("orderDate_begin"); String orderDateEnd = request.getParameter("orderDate_end"); String orderOnumber = orders.getOrderOnumber(); if(StringUtils.isNotBlank(orderOnumber)){ orders.setOrderOnumber("*" +orderOnumber +"*"); } String warehouseName = orders.getWarehouseName(); if(StringUtils.isNotBlank(warehouseName)){ orders.setWarehouseName("*" +warehouseName +"*"); } cq.addOrder("createDate", SortDirection.desc); //查询条件组装器 org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, orders); try{ //自定义追加查询条件 if(StringUtils.isNotBlank(orderDateBegin) && StringUtils.isNotBlank(orderDateEnd)){ cq.ge("orderDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(orderDateBegin + " 00:00:00")); cq.le("orderDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(orderDateEnd + " 23:59:59")); } }catch (Exception e) { throw new BusinessException(e.getMessage()); } cq.add(); this.ordersService.getDataGridReturn(cq, true); TagUtil.datagrid(response, dataGrid); } /** * 删除订单表 * * @return */ @RequestMapping(params = "doDel") @ResponseBody public AjaxJson doDel(POrdersEntity orders, HttpServletRequest request) { AjaxJson j = new AjaxJson(); orders = systemService.getEntity(POrdersEntity.class, orders.getId()); String message = "订单表删除成功"; try{ ordersService.delMain(orders); systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO); }catch(Exception e){ e.printStackTrace(); message = "订单表删除失败"; throw new BusinessException(e.getMessage()); } j.setMsg(message); return j; } /** * 批量删除订单表 * * @return */ @RequestMapping(params = "doBatchDel") @ResponseBody public AjaxJson doBatchDel(String ids,HttpServletRequest request){ AjaxJson j = new AjaxJson(); String message = "订单表删除成功"; try{ for(String id:ids.split(",")){ POrdersEntity orders = systemService.getEntity(POrdersEntity.class, id ); ordersService.delMain(orders); systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO); } }catch(Exception e){ e.printStackTrace(); message = "订单表删除失败"; throw new BusinessException(e.getMessage()); } j.setMsg(message); return j; } /** * 添加订单表 * * @param ids * @return */ @RequestMapping(params = "doAdd") @ResponseBody public AjaxJson doAdd(POrdersEntity orders,POrdersPage ordersPage, HttpServletRequest request) { List orderDetailsList = ordersPage.getOrderDetailsList(); AjaxJson j = new AjaxJson(); String message = "添加成功"; try{ HttpSession session = ContextHolderUtils.getSession(); TSUser tuser = (TSUser)session.getAttribute("LOCAL_CLINET_USER"); orders.setHandlerPersonId(tuser.getId()); orders.setHandlerPersonName(tuser.getRealName()); orders.setOrderOnumber(OrderNumTools.generateNextBillCode(getMaxLocalCode(),"PU"));// 采购单号 orders.setOrderStatus(StringUtils.isEmpty(orders.getSourceId() ) ? Globals.UNAPPROVED : "3");// 未审批状态,但有来源的,直接设置为已审批 String sourceType=orders.getSourceType(); if(StringUtils.equals(sourceType,"normal" )){//直接采购需要审批,其他不需要 orders.setBpmStatus(Globals.BPM_STATUS_Normal.toString()); }else { orders.setBpmStatus(Globals.BPM_STATUS_FINISHED.toString()); } ordersService.addMain(orders, orderDetailsList); systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO); }catch(Exception e){ e.printStackTrace(); message = "订单表添加失败"; throw new BusinessException(e.getMessage()); } j.setMsg(message); return j; } @RequestMapping(params = "doAdd4FixAsset") @ResponseBody public AjaxJson doAdd4FixAsset(OrdersFixAssetEntity ordersFixAssetEntity, OrdersFixAssetPage ordersFixAssetPage, HttpServletRequest request) { POrdersEntity orders = new POrdersEntity(); try { MyBeanUtils.copyBean2Bean(orders, ordersFixAssetEntity); orders.setId(null); orders.setSourceType("fixAsset"); orders.setSourceId(ordersFixAssetEntity.getId()); orders.setCreateBy(null); orders.setCreateDate(null); orders.setCreateName(null); orders.setUpdateBy(null); orders.setUpdateDate(null); orders.setUpdateName(null); orders.setAmountPayable(ordersFixAssetEntity.getTotalMoney()); orders.setOrderAuditor(""); orders.setBpmStatus("3"); } catch (Exception e) { e.printStackTrace(); } List orderDetailsList = ordersFixAssetPage.getOrderProductsList(); POrdersPage ordersPage = new POrdersPage(); List detailsEntities = new ArrayList<>(orderDetailsList.size()); for(OrderFixAssetProductsEntity productsEntity :orderDetailsList ) { OrderDetailsEntity detailsEntity = new OrderDetailsEntity(); try { MyBeanUtils.copyBean2Bean(detailsEntity, productsEntity); detailsEntity.setSourceBId(productsEntity.getId()); detailsEntity.setSourceId(ordersFixAssetEntity.getId()); detailsEntity.setId(null); detailsEntity.setCreateBy(null); detailsEntity.setCreateDate(null); detailsEntity.setCreateName(null); detailsEntity.setFkId(null); detailsEntity.setUpdateBy(null); detailsEntity.setUpdateDate(null); detailsEntity.setUpdateName(null); detailsEntity.setSourceCode(ordersFixAssetEntity.getOrderOnumber()); } catch (Exception e) { e.printStackTrace(); } detailsEntities.add(detailsEntity); } ordersPage.setOrderDetailsList(detailsEntities); return doAdd(orders, ordersPage, request); } private String getMaxLocalCode(){ StringBuilder sb = new StringBuilder(); sb.append("SELECT order_onumber FROM t_b_porders"); sb.append(" ORDER BY order_onumber DESC"); List> objMapList = systemService.findForJdbc(sb.toString(), 1, 1); String returnCode = null; if(objMapList!=null && objMapList.size()>0){ returnCode = (String)objMapList.get(0).get("order_onumber"); } return returnCode; } /** * 订单表新增页面跳转,选择申购单后跳转此页面 * * @return */ @RequestMapping(params = "goAddByQGD") public ModelAndView goAdd(String qgdid,POrdersEntity orders, HttpServletRequest req) { if (StringUtil.isNotEmpty(orders.getId())) { orders = ordersService.getEntity(POrdersEntity.class, orders.getId()); req.setAttribute("ordersPage", orders); } else{ OrdersEntity qgd = systemService.get(OrdersEntity.class, qgdid); String orderType = qgd.getOrderType(); if(StringUtils.isNotBlank(orderType)) { if (orderType.equals("1")) {//月度申购 req.setAttribute("sourceType", "orders-monthly"); } else if (orderType.equals("2")) {//临时申购 req.setAttribute("sourceType", "orders-temp"); } else if (orderType.equals("3")) {//代业主申购 req.setAttribute("sourceType", "orders-representOwner"); } else {//历史数据 req.setAttribute("sourceType", "orders-monthly"); } }else{ req.setAttribute("sourceType", "orders-monthly"); } orders = porderDao.getOrderByQGD(qgdid); List details = porderDao.getDetailsByQGD(qgdid); req.setAttribute("ordersPage", orders); req.setAttribute("orderDetailsList", details); } ModelAndView mw = new ModelAndView("cn/com/lzt/purchase/orders-addByQGD"); mw.addObject("qgdid", qgdid); return mw; } /** * 更新订单表 * * @param ids * @return */ @RequestMapping(params = "doUpdate") @ResponseBody public AjaxJson doUpdate(POrdersEntity orders,POrdersPage ordersPage, HttpServletRequest request) { List orderDetailsList = ordersPage.getOrderDetailsList(); AjaxJson j = new AjaxJson(); String message = "更新成功"; try{ ordersService.updateMain(orders, orderDetailsList); systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO); }catch(Exception e){ e.printStackTrace(); message = "更新订单表失败"; throw new BusinessException(e.getMessage()); } j.setMsg(message); return j; } /** * 订单表新增页面跳转 * * @return */ @RequestMapping(params = "goAdd") public ModelAndView goAdd(POrdersEntity orders, HttpServletRequest req) { if (StringUtil.isNotEmpty(orders.getId())) { orders = ordersService.getEntity(POrdersEntity.class, orders.getId()); req.setAttribute("ordersPage", orders); } return new ModelAndView("cn/com/lzt/purchase/orders-add"); } /** * 订单表编辑页面跳转 * * @return */ @RequestMapping(params = "goUpdate") public ModelAndView goUpdate(POrdersEntity orders, HttpServletRequest req) { String isView = req.getParameter("viewFlag"); req.setAttribute("viewFlag", isView); if (StringUtil.isNotEmpty(orders.getId())) { orders = ordersService.getEntity(POrdersEntity.class, orders.getId()); // idandname(req, orders); req.setAttribute("ordersPage", orders); } return new ModelAndView("cn/com/lzt/purchase/orders-update"); } // public void idandname(HttpServletRequest req, OrdersEntity orders) { // WarehouseEntity warehouseEntity = systemService.findUniqueByProperty(WarehouseEntity.class, "id", orders.getWarehouseId()); // RelatedUnitsEntity relatedUnitsEntity = systemService.findUniqueByProperty(RelatedUnitsEntity.class, "id", orders.getSupplierName()); // TSBaseUser user = systemService.findUniqueByProperty(TSBaseUser.class, "id", orders.getHandlerPerson()); // // 经手人 // String handlerPersonName=""; // // 仓库 // String wareHouseName = ""; // // 供应商名 // String unitName = ""; // if (warehouseEntity != null) { // wareHouseName= warehouseEntity.getWarehouseName(); // req.setAttribute("wareHouseIdName", wareHouseName); // } // if (relatedUnitsEntity != null) { // unitName= relatedUnitsEntity.getUnitName(); // req.setAttribute("textUnitName", unitName); // } // // if (user != null) { // handlerPersonName= user.getRealName(); // req.setAttribute("realName", handlerPersonName); // } // } /** * 加载明细列表[采购商品] * * @return */ @RequestMapping(params = "orderDetailsList") public ModelAndView orderDetailsList(POrdersEntity orders, HttpServletRequest req) { //=================================================================================== //获取参数 Object id0 = orders.getId(); //=================================================================================== //查询-采购商品 String hql0 = "from OrderDetailsEntity where 1 = 1 AND fK_ID =? "; try{ List orderDetailsEntityList = systemService.findHql(hql0,id0); String sql = "select detail.*, supplier.id as supplierId, supplier.unit_name as supplierName from t_b_porder_details detail " + "left join t_b_goods_info goods on goods.id=detail.goods_id " + "left join t_b_related_units supplier on supplier.id = goods.default_provider where fk_id =? "; List> result = systemService.findForJdbc(sql, id0); HashMap> hm_id2map = new HashMap<>(); if(result != null && result.size()>0) { for(Map map : result) { hm_id2map.put((String)map.get("id"), map); } } if(orderDetailsEntityList != null) { for(OrderDetailsEntity entity : orderDetailsEntityList) { String entityid = entity.getId(); if(hm_id2map.containsKey(entityid)) { Map map = hm_id2map.get(entityid); if(StringUtils.isBlank(entity.getSupplierId())) { entity.setSupplierId((String) map.get("supplierId")); entity.setSupplierName((String) map.get("supplierName")); }else{ String supplierId = entity.getSupplierId(); RelatedUnitsEntity relatedUnitsEntity = systemService.getEntity(RelatedUnitsEntity.class,supplierId); entity.setSupplierName(relatedUnitsEntity.getUnitName()); } } } } req.setAttribute("orderDetailsList", orderDetailsEntityList); }catch(Exception e){ logger.info(e.getMessage()); } return new ModelAndView("cn/com/lzt/purchasedetails/orderDetailsList"); } /** * 加载明细列表[采购商品] * 参照申购单新增采购订单时使用 * @return */ @RequestMapping(params = "orderDetailsListNew") public ModelAndView orderDetailsListNew(String qgdid,POrdersEntity orders, HttpServletRequest req) { try{ List orderDetailsEntityList = porderDao.getDetailsByQGD(qgdid); String sql = "select detail.*, supplier.id as supplierId, supplier.unit_name as supplierName from t_b_order_products detail " + "left join t_b_goods_info goods on goods.id=detail.goods_id " + "left join t_b_related_units supplier on supplier.id = goods.default_provider where fk_id = ?"; List> result = systemService.findForJdbc(sql, qgdid); HashMap> hm_id2map = new HashMap<>(); if(result != null && result.size()>0) { for(Map map : result) { hm_id2map.put((String)map.get("goods_id"), map); } } if(orderDetailsEntityList != null) { for(OrderDetailsEntity entity : orderDetailsEntityList) { String goodsid = entity.getGoodsId(); if(hm_id2map.containsKey(goodsid)) { Map map = hm_id2map.get(goodsid); if(StringUtils.isBlank(entity.getSupplierId())) { entity.setSupplierId((String) map.get("supplierId")); entity.setSupplierName((String) map.get("supplierName")); }else{ String supplierId = entity.getSupplierId(); RelatedUnitsEntity relatedUnitsEntity = systemService.getEntity(RelatedUnitsEntity.class,supplierId); entity.setSupplierName(relatedUnitsEntity.getUnitName()); } } } } req.setAttribute("orderDetailsList", orderDetailsEntityList); }catch(Exception e){ logger.info(e.getMessage()); } return new ModelAndView("cn/com/lzt/purchasedetails/orderDetailsList"); } @RequestMapping(params = "exportXlsOfSupplierAllGoods") public void exportXlsOfSupplierAllGoods(String orderid, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid,ModelMap map) { List workbooklist = getSupplierAllWorkboodsBygoodsids(orderid, map); if(workbooklist == null || workbooklist.size() == 0 || workbooklist.get(0)==null) { return; } ServletOutputStream out = null; ZipOutputStream zipOutputStream = null; String timenow = ""; SimpleDateFormat formater = new SimpleDateFormat("yyMMddHHmmss_sss"); try { timenow = formater.format(new Date()); } catch (Exception e) { } try { out=response.getOutputStream(); String codedFileName = "供应商供货汇总_"+timenow+".zip"; if (isIE(request)) { codedFileName = java.net.URLEncoder.encode(codedFileName, "UTF8"); } else { codedFileName = new String(codedFileName.getBytes("UTF-8"), "ISO-8859-1"); } zipOutputStream= new ZipOutputStream(out); response.setContentType("application/octet-stream "); response.setHeader("Connection", "close"); // 表示不能用浏览器直接打开 response.setHeader("Accept-Ranges", "bytes");// 告诉客户端允许断点续传多线程连接下载 response.setHeader("Content-Disposition", "attachment;filename=" + codedFileName); response.setCharacterEncoding("UTF-8"); for(Workbook book : workbooklist) { ZipEntry entry = new ZipEntry(book.getSheetName(0) + ".xls"); zipOutputStream.putNextEntry(entry); book.write(zipOutputStream); } zipOutputStream.flush(); } catch (IOException e) { org.jeecgframework.core.util.LogUtil.error(e.getMessage()); }finally { if(zipOutputStream != null) { try { zipOutputStream.close(); } catch (IOException e) { org.jeecgframework.core.util.LogUtil.error(e.getMessage()); } } } } private List getSupplierAllWorkboodsBygoodsids(String goodsids,ModelMap map){ HashMap> hm_supplier2Goods = getSupplierAllGoodsDto(goodsids); ArrayList workbooklist = new ArrayList<>(); for(String suppiler : hm_supplier2Goods.keySet()) { RelatedUnitsEntity supplierEntity = systemService.get(RelatedUnitsEntity.class, suppiler); HashMap hm_dtos = hm_supplier2Goods.get(suppiler); if(hm_dtos != null && hm_dtos.size()>0) { ArrayList dtolist = new ArrayList<>(hm_dtos.values()); for(int i=0 ; i fileNameMap = new HashMap(); for(int i=0 ; i workbookList = getTemplateWorkbooksByorders(orderid); if(workbookList == null || workbookList.size() == 0 || workbookList.get(0)==null) { System.out.println("项目采购单导出出现严重错误"); return; } POrdersEntity order = systemService.get(POrdersEntity.class, orderid); if(order == null) { return; } for(HSSFWorkbook book : workbookList) { String fileName = book.getSheetName(0) + "_" + order.getWarehouseName(); if(fileNameMap.containsKey(fileName)) { fileNameMap.put(fileName,fileNameMap.get(fileName)+1); fileName = fileName+fileNameMap.get(fileName); }else { fileNameMap.put(fileName, 0); } ZipEntry entry = new ZipEntry(fileName + ".xls"); zipOutputStream.putNextEntry(entry); book.write(zipOutputStream); } } zipOutputStream.flush(); } catch (IOException e) { org.jeecgframework.core.util.LogUtil.error(e.getMessage()); }finally { if(zipOutputStream != null) { try { zipOutputStream.close(); } catch (IOException e) { org.jeecgframework.core.util.LogUtil.error(e.getMessage()); } } } // TemplateExportParams params = new TemplateExportParams(getExcelTemplate()); // // params.setDataSheetNum(0); // params.setTempParams("t"); // //params.setScanAllsheet(false); // List dataSet = new ArrayList(); // POrdersEntity entity = new POrdersEntity(); // entity.setOrderOnumber("111"); // entity.setSupplierName("京东商城"); // POrdersEntity entity2 = new POrdersEntity(); // entity2.setOrderOnumber("222"); // entity2.setSupplierName("天猫商城"); // POrdersEntity entity3= new POrdersEntity(); // entity3.setOrderOnumber("333"); // entity3.setSupplierName("天猫商城"); // dataSet.add(entity); // dataSet.add(entity2); // dataSet.add(entity3); // Map macro_map = new HashMap(); // macro_map.put("warehouseName", "嘉定图书馆"); // macro_map.put("dataset", dataSet); // map.put(TemplateExcelConstants.FILE_NAME,"送货单"); // map.put(TemplateExcelConstants.PARAMS,params); // map.put(TemplateExcelConstants.CLASS, POrdersEntity.class); // map.put(TemplateExcelConstants.LIST_DATA, dataSet); // map.put(TemplateExcelConstants.MAP_DATA, macro_map); // // return TemplateExcelConstants.JEECG_TEMPLATE_EXCEL_VIEW; } private List getTemplateWorkbooksByorders(String orderid) { List allDtos = pordersServiceI.getOrderToSupplierDtoPage(orderid); Map> mp_supplier2Dtos = new HashMap>(); //数量合计 Double amountSum = 0.0; //金额合计 Double moneySum = 0.0; for(OrderToSupplierDto dto : allDtos) { if(dto.getAmount()!= null) { amountSum += dto.getAmount(); } if(dto.getMoney() != null) { moneySum += dto.getMoney(); } // 备注,防止没有边框 if(StringUtil.isEmpty(dto.getDescription())) { dto.setDescription(" "); } String supplierID = dto.getSupplierID(); if(!mp_supplier2Dtos.containsKey(supplierID)) { mp_supplier2Dtos.put(supplierID, new ArrayList()); } List listInMap = mp_supplier2Dtos.get(supplierID); listInMap.add(dto); } List workbookList = new ArrayList(); for(String supplierid : mp_supplier2Dtos.keySet()) { List list = mp_supplier2Dtos.get(supplierid); for(int i=0 ; i list = getYunjieList(orderid); map.put(NormalExcelConstants.FILE_NAME,"美都环卫物业保洁用纸发货清单"); map.put(NormalExcelConstants.CLASS,OrderToYunjieDto.class); ExportParams params = new ExportParams("美都环卫物业保洁用纸发货清单", "日期:", "韵洁发货清单"); params.setAddIndex(true); map.put(NormalExcelConstants.PARAMS,params); map.put(NormalExcelConstants.DATA_LIST,list); return NormalExcelConstants.JEECG_EXCEL_VIEW; } /** * 导出乐忆excel * * @param request * @param response */ @SuppressWarnings({ "rawtypes", "unchecked" }) @RequestMapping(params = "exportLeyiXls") public String exportLeyiXls(String orderid,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid,ModelMap map) { List list = getLeyiList(orderid); map.put(NormalExcelConstants.FILE_NAME,"美都环卫物业乐忆垃圾袋发货清单"); map.put(NormalExcelConstants.CLASS,OrderToLeyiDto.class); ExportParams params = new ExportParams("美都环卫物业乐忆垃圾袋发货清单", "日期:", "乐忆垃圾袋发货清单"); params.setAddIndex(true); map.put(NormalExcelConstants.PARAMS,params); map.put(NormalExcelConstants.DATA_LIST,list); return NormalExcelConstants.JEECG_EXCEL_VIEW; } /** * @param orderid * @return */ private List getLeyiList(String ids) { HashMap hm_warehouse2dto = new HashMap<>(); if(ids != null) { String[] splits = ids.split(","); if(splits.length > 0) { for(String id:ids.split(",")){ POrdersEntity orders = systemService.getEntity(POrdersEntity.class,id); if(orders != null) { String orderid = orders.getId(); String hql0 = "from OrderDetailsEntity where 1 = 1 AND fK_ID =? "; try{ List orderDetailsEntityList = systemService.findHql(hql0,orderid); for(OrderDetailsEntity entity : orderDetailsEntityList) { String supplier = orders.getWarehouseId(); OrderToLeyiDto dto = getOrderToLeyiDto(supplier, hm_warehouse2dto); dealDeliverListData(orders, entity, dto); } }catch(Exception e){ logger.info(e.getMessage()); } } } } } return new ArrayList(hm_warehouse2dto.values()); } /** * @param orders * @param entity * @param dto */ // private void dealLeyiData(POrdersEntity orders, OrderDetailsEntity entity, OrderToLeyiDto dto) { // if(StringUtil.isEmpty(dto.getWarehouseId())) { // dto.setWarehouseId(orders.getWarehouseId()); // } // // if(StringUtil.isEmpty(dto.getWarehouseName())) { // dto.setWarehouseName(orders.getWarehouseName()); // } // // if(StringUtil.isEmpty(dto.getWarehouseAddr())){ // String warehouseid = orders.getWarehouseId(); // WarehouseEntity warehouse = systemService.get(WarehouseEntity.class, warehouseid); // dto.setWarehouseAddr(warehouse.getWarehouseAddress()); //// String responsiblePerson = warehouse.getResponsiblePerson(); //// TSUser user = systemService.get(TSUser.class, responsiblePerson); // dto.setWarehouseContact(warehouse.getShoujianren()); // dto.setWarehousePhone(warehouse.getShoujianrenPhone()); // } // // String goodsid = entity.getGoodsId(); // TBGoodsInfoEntity goodsEntity = systemService.get(TBGoodsInfoEntity.class, goodsid); // // setValueByAnnotation(dto,orders, entity, goodsEntity); // } // /** // * 通過反射和注解的方式獲取訂單貨品數量 // * @param dtoclass // * @param orders // * @param entity // * @param goodsEntity // */ // private void setValueByAnnotation(OrderToLeyiDto dto, POrdersEntity orders, OrderDetailsEntity entity, TBGoodsInfoEntity goodsEntity) { // Field[] fields = dto.getClass().getDeclaredFields(); // for(int i=0 ; i hm_supplier2Dto) { OrderToLeyiDto dto = hm_supplier2Dto.get(supplier); if(dto == null) { dto = new OrderToLeyiDto(); hm_supplier2Dto.put(supplier, dto); } return dto; } /** * @param ids * @return */ private List getYunjieList(String ids) { HashMap hm_warehouse2dto = new HashMap<>(); if(ids != null) { String[] splits = ids.split(","); if(splits.length > 0) { for(String id:ids.split(",")){ POrdersEntity orders = systemService.getEntity(POrdersEntity.class,id); if(orders != null) { String orderid = orders.getId(); String hql0 = "from OrderDetailsEntity where 1 = 1 AND fK_ID =? "; try{ List orderDetailsEntityList = systemService.findHql(hql0,orderid); for(OrderDetailsEntity entity : orderDetailsEntityList) { String supplier = orders.getWarehouseId(); OrderToYunjieDto dto = getOrderToYunjieDto(supplier, hm_warehouse2dto); dealYunjieData(orders, entity, dto); } }catch(Exception e){ logger.info(e.getMessage()); } } } } } return new ArrayList(hm_warehouse2dto.values()); } /** * @param orders * @param entity * @param dto */ private void dealYunjieData(POrdersEntity orders, OrderDetailsEntity entity, OrderToYunjieDto dto) { if(StringUtil.isEmpty(dto.getWarehouseId())) { dto.setWarehouseId(orders.getWarehouseId()); } if(StringUtil.isEmpty(dto.getWarehouseName())) { dto.setWarehouseName(orders.getWarehouseName()); } if(StringUtil.isEmpty(dto.getWarehouseAddr())){ String warehouseid = orders.getWarehouseId(); WarehouseEntity warehouse = systemService.get(WarehouseEntity.class, warehouseid); dto.setWarehouseAddr(warehouse.getWarehouseAddress()); // String responsiblePerson = warehouse.getResponsiblePerson(); // TSUser user = systemService.get(TSUser.class, responsiblePerson); dto.setWarehouseContact(warehouse.getShoujianren()); dto.setWarehousePhone(warehouse.getShoujianrenPhone()); } String goodsid = entity.getGoodsId(); TBGoodsInfoEntity goodsEntity = systemService.get(TBGoodsInfoEntity.class, goodsid); Double yunjiecashouzhi = dto.getYunjiecashouzhi() == null ? 0.0 : dto.getYunjiecashouzhi(); yunjiecashouzhi += getOrderDetailQuantity(orders, entity, goodsEntity, "yjcsz"); dto.setYunjiecashouzhi(yunjiecashouzhi); Double yunjiexiaojuanzhi = dto.getYunjiexiaojuanzhi() == null ? 0.0 : dto.getYunjiexiaojuanzhi(); yunjiexiaojuanzhi += getOrderDetailQuantity(orders, entity, goodsEntity, "yjxjz"); dto.setYunjiexiaojuanzhi(yunjiexiaojuanzhi); Double yunjieweishengzhi = dto.getYunjieweishengzhi() == null ? 0.0 : dto.getYunjieweishengzhi(); yunjieweishengzhi += getOrderDetailQuantity(orders, entity, goodsEntity, "yjwsz"); dto.setYunjieweishengzhi(yunjieweishengzhi); Double yunjiedajuanzhi = dto.getYunjiedajuanzhi() == null ? 0.0 : dto.getYunjiedajuanzhi(); yunjiedajuanzhi += getOrderDetailQuantity(orders, entity, goodsEntity, "yjdjz"); dto.setYunjiedajuanzhi(yunjiedajuanzhi); Double yunjiejieyunyahuaweishengzhi400 = dto.getYunjiejieyunyahuaweishengzhi400() == null ? 0.0 : dto.getYunjiejieyunyahuaweishengzhi400(); yunjiejieyunyahuaweishengzhi400 += getOrderDetailQuantity(orders, entity, goodsEntity, "yjjyyhwsz"); dto.setYunjiejieyunyahuaweishengzhi400(yunjiejieyunyahuaweishengzhi400); Double yunjiejieyunxiaojuanzhi160 = dto.getYunjiejieyunxiaojuanzhi160() == null ? 0.0 : dto.getYunjiejieyunxiaojuanzhi160(); yunjiejieyunxiaojuanzhi160 += getOrderDetailQuantity(orders, entity, goodsEntity, "yjjyxjz160"); dto.setYunjiejieyunxiaojuanzhi160(yunjiejieyunxiaojuanzhi160); Double yunjiejieyunmianjinzhi200 = dto.getYunjiejieyunmianjinzhi200() == null ? 0.0 : dto.getYunjiejieyunmianjinzhi200(); yunjiejieyunmianjinzhi200 += getOrderDetailQuantity(orders, entity, goodsEntity, "jBgg"); dto.setYunjiejieyunmianjinzhi200(yunjiejieyunmianjinzhi200); Double yunjiejieyunjiarenyahuaweishengzhi200 = dto.getYunjiejieyunjiarenyahuaweishengzhi200() == null ? 0.0 : dto.getYunjiejieyunjiarenyahuaweishengzhi200(); yunjiejieyunjiarenyahuaweishengzhi200 += getOrderDetailQuantity(orders, entity, goodsEntity, "qMgk"); dto.setYunjiejieyunjiarenyahuaweishengzhi200(yunjiejieyunjiarenyahuaweishengzhi200); } /** * @param orders * @param ordersDetail * @param dto * @param filterGoodsCode * @return */ private Double getOrderDetailQuantity(POrdersEntity orders, OrderDetailsEntity ordersDetail, TBGoodsInfoEntity goodsEntity, String filterGoodsCode) { if(filterGoodsCode.equals(goodsEntity.getGoodsCode())) { String detailUnit = ordersDetail.getMeasureUnit(); String purchaseUnit = goodsEntity.getPurchaseUnit(); Double conversionWithPurchaseUnit=null; Double conversionWithDetailUnit=null; String hql0 = "from TBPriceInfoEntity where 1 = 1 AND GOODS_ID = ?"; List tBPriceInfoEntityList = systemService.findHql(hql0,goodsEntity.getId()); if(tBPriceInfoEntityList != null && tBPriceInfoEntityList.size() > 0){ for(TBPriceInfoEntity priceEntity : tBPriceInfoEntityList) { if(priceEntity.getMeteringUnit().equals(purchaseUnit)) { conversionWithPurchaseUnit = priceEntity.getConversion(); } if(priceEntity.getMeteringUnit().equals(detailUnit)){ conversionWithDetailUnit = priceEntity.getConversion(); } } } if(conversionWithDetailUnit != null) { Double conversion = getConversion(conversionWithPurchaseUnit, conversionWithDetailUnit); Double detailQantity = ordersDetail.getQuantity(); Double purchaseQantity = conversion * detailQantity; NumberFormat nf = NumberFormat.getNumberInstance(); // 保留3位小数 nf.setMaximumFractionDigits(1); nf.setGroupingUsed(false); // 如果不需要四舍五入,可以使用RoundingMode.DOWN nf.setRoundingMode(RoundingMode.UP); return Double.valueOf(nf.format(purchaseQantity)); } } return 0.0; } /** * @param conversionWithPurchaseUnit * @param conversionWithDetailUnit * @return */ private Double getConversion(Double conversionWithPurchaseUnit, Double conversionWithDetailUnit) { return conversionWithDetailUnit/conversionWithPurchaseUnit; } /** * @param supplier * @param hm_supplier2Dto * @return */ private OrderToYunjieDto getOrderToYunjieDto(String supplier, HashMap hm_supplier2Dto) { OrderToYunjieDto dto = hm_supplier2Dto.get(supplier); if(dto == null) { dto = new OrderToYunjieDto(); hm_supplier2Dto.put(supplier, dto); } return dto; } private Workbook getSingleWorkbooksByModel(Map model) { Workbook workbook = ExcelExportUtil.exportExcel((ExportParams) model.get(NormalExcelConstants.PARAMS) , (Class) model.get(NormalExcelConstants.CLASS), (Collection) model.get(NormalExcelConstants.DATA_LIST)); return workbook; } /** * @param ids * @return */ private HashMap> getSupplierAllGoodsDto(String ids) { HashMap> hm_supplier2Goods = new HashMap<>(); if(ids != null) { String[] splits = ids.split(","); if(splits.length > 0) { for(String id:ids.split(",")){ POrdersEntity orders = systemService.getEntity(POrdersEntity.class,id); if(orders != null) { String orderid = orders.getId(); String hql0 = "from OrderDetailsEntity where 1 = 1 AND fK_ID =? "; try{ List orderDetailsEntityList = systemService.findHql(hql0,orderid); for(OrderDetailsEntity entity : orderDetailsEntityList) { String supplier = entity.getSupplierId(); OrderToSupplierAllGoodsDto dto = getOrderToSupplierAllDto(supplier, entity, hm_supplier2Goods); dealOrderToSupplierAllData(orders,entity,dto); } }catch(Exception e){ e.printStackTrace(); logger.error(e.getMessage()); } } } } } return hm_supplier2Goods; } /** * @param entity * @param orders * @param dto */ private void dealOrderToSupplierAllData(POrdersEntity orders, OrderDetailsEntity entity, OrderToSupplierAllGoodsDto dto) { if(StringUtil.isEmpty(dto.getGoodsID())) { dto.setGoodsID(entity.getGoodsId()); } if(StringUtil.isEmpty(dto.getGoodsName())) { dto.setGoodsName(entity.getPname()); } if(StringUtil.isEmpty(dto.getSpecification())) { dto.setSpecification(entity.getSpecType()); } TBGoodsInfoEntity goodsEntity = systemService.get(TBGoodsInfoEntity.class, entity.getGoodsId()); if(StringUtil.isEmpty(dto.getUnit())) { List dictList = jeecgDictDao.querySystemDict("metering_calcu_unit"); HashMap map = new HashMap<>(); for(DictEntity dic : dictList) { map.put(dic.getTypecode(), dic.getTypename()); if(goodsEntity.getPurchaseUnit().equals(dic.getTypecode())) { dto.setUnit(dic.getTypename()); break; } } } Double amount = dto.getAmount() == null ? 0.0 : dto.getAmount(); amount += getOrderDetailQuantity(orders, entity, goodsEntity, goodsEntity.getGoodsCode()); dto.setAmount(amount); } /** * @param supplier * @param entity * @param hm_supplier2Goods * @return */ private OrderToSupplierAllGoodsDto getOrderToSupplierAllDto(String supplier, OrderDetailsEntity entity, HashMap> hm_supplier2Goods) { HashMap hm_goods2Dto = hm_supplier2Goods.get(supplier); if(hm_goods2Dto == null) { hm_goods2Dto = new HashMap<>(); hm_supplier2Goods.put(supplier, hm_goods2Dto); } String goodsid = entity.getGoodsId(); OrderToSupplierAllGoodsDto dto = hm_goods2Dto.get(goodsid); if(dto == null) { dto = new OrderToSupplierAllGoodsDto(); hm_goods2Dto.put(goodsid, dto); } return dto; } /** * @param list * @param moneySum 金额合计 * @param amountSum 数量合计 * @return */ private HSSFWorkbook getSingleTemplateWorkbookByDtos(List list) { TemplateExportParams params = new TemplateExportParams(getExcelTemplate(),0); params.setSheetName(list.get(0).getSupplierName()); params.setStyle(ExcelExportStylerBorderImpl.class); //params.setHeadingRows(8); NumberFormat nf = NumberFormat.getNumberInstance(); nf.setMaximumFractionDigits(2); Double amountSum = 0.0; Double moneySum = 0.0; if(list != null) { for(OrderToSupplierDto dto : list) { amountSum += dto.getAmount(); moneySum += dto.getMoney(); } } Map macro_map = new HashMap(); macro_map.put("supplierName", list.get(0).getSupplierName()); macro_map.put("warehouseName", list.get(0).getWarehouseName()); macro_map.put("warehouseAddress", list.get(0).getWarehouseAddress()); macro_map.put("handlePerson", list.get(0).getHandlePerson()); macro_map.put("orderMonths", getOrderMonth(list.get(0).getOrderDate())); String contacts = list.get(0).getShoujianren(); if(StringUtil.isEmpty(contacts)) { contacts = list.get(0).getContacts(); } macro_map.put("contacts", contacts); macro_map.put("moneySum", nf.format(moneySum)); macro_map.put("amountSum", nf.format(amountSum)); String mobilePhone = list.get(0).getShoujianrenPhone(); if(StringUtil.isEmpty(mobilePhone)) { mobilePhone = list.get(0).getMobilePhone(); } macro_map.put("mobilePhone", mobilePhone); macro_map.put("dataset", list); HSSFWorkbook workbook = (HSSFWorkbook)new OrdersExcelExportOfTemplateUtil().createExcleByTemplate(params, OrderToSupplierDto.class, list, macro_map); return workbook; } /** * @param orderDate * @return */ private String getOrderMonth(Date orderDate) { if(orderDate == null) { return ""; } Calendar calend = Calendar.getInstance(); calend.setTime(orderDate); int month = calend.get(Calendar.MONTH)+1; if(month%2 > 0) { calend.add(Calendar.MONTH, -1); } calend.set(Calendar.DATE, 1); SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd"); String order_ref = sim.format(calend.getTime()); String hql0 = "from OrderMonthsEntity where 1 = 1 AND refDate = '" + order_ref +"'" ; try{ List orderMonthsEntityList = systemService.findByQueryString(hql0); if(orderMonthsEntityList != null && orderMonthsEntityList.size()>0) { return orderMonthsEntityList.get(0).getOrdermonthsName(); } }catch(Exception e){ e.printStackTrace(); logger.error(e.getMessage()); } return ""; } boolean isIE(HttpServletRequest request) { return (request.getHeader("USER-AGENT").toLowerCase().indexOf("msie") > 0 || request.getHeader("USER-AGENT").toLowerCase().indexOf("rv:11.0") > 0) ? true : false; } private String getExcelTemplate() { String osNameString = System.getProperties().getProperty("os.name"); String nodepath = this.getClass().getClassLoader().getResource("/").getPath(); String filePath = ""; if(osNameString.contains("Windows") || osNameString.contains("windows")) { filePath = nodepath.substring(1, nodepath.length() - 16); } else { filePath = nodepath.substring(0, nodepath.length() - 16); } String path = filePath+"temp/porderTemplate/orderTemplate.xls";// 保存新EXCEL路径 return path; } /** * 导出excel * * @param request * @param response */ @SuppressWarnings({ "rawtypes", "unchecked" }) @RequestMapping(params = "exportXls") public String exportXls(POrdersEntity orders,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid,ModelMap map) { CriteriaQuery cq = new CriteriaQuery(POrdersEntity.class, dataGrid); String orderDateBegin = request.getParameter("orderDate_begin"); String orderDateEnd = request.getParameter("orderDate_end"); // 模糊查询 String orderOnumber = orders.getOrderOnumber(); if(StringUtils.isNotBlank(orderOnumber)){ orders.setOrderOnumber("*" +orderOnumber +"*"); } //查询条件组装器 org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, orders); try{ //自定义追加查询条件 if(StringUtils.isNotBlank(orderDateBegin) && StringUtils.isNotBlank(orderDateEnd)){ cq.ge("orderDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(orderDateBegin + " 00:00:00")); cq.le("orderDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(orderDateEnd + " 23:59:59")); } }catch (Exception e) { throw new BusinessException(e.getMessage()); } cq.add(); List list=this.ordersService.getListByCriteriaQuery(cq, false); List listResult = null; List pageList=new ArrayList(); List orderDetailsEntityListResult = null; if(list!=null&&list.size()>0){ Class clsOrder = MyClassLoader.getClassByScn("cn.com.lzt.purchase.entity.POrdersEntity"); try { listResult =systemService.dealResultShowText4Entities(list, clsOrder); } catch (Exception e1) { logger.info(e1.getMessage()); } for(POrdersEntity entity:listResult){ try{ POrdersPage page=new POrdersPage(); MyBeanUtils.copyBeanNotNull2Bean(entity,page); Object id0 = entity.getId(); String hql0 = "from OrderDetailsEntity where 1 = 1 AND fK_ID =? "; List orderDetailsEntityList = systemService.findHql(hql0,id0); Class cls = MyClassLoader.getClassByScn("cn.com.lzt.purchasedetails.entity.OrderDetailsEntity"); orderDetailsEntityListResult =systemService.dealResultShowText4Entities(orderDetailsEntityList, cls); page.setOrderDetailsList(orderDetailsEntityListResult); pageList.add(page); }catch(Exception e){ logger.info(e.getMessage()); } } } map.put(NormalExcelConstants.FILE_NAME,"订单表"); map.put(NormalExcelConstants.CLASS,POrdersPage.class); map.put(NormalExcelConstants.PARAMS,new ExportParams("订单表列表", "导出人:Jeecg", "导出信息")); map.put(NormalExcelConstants.DATA_LIST,pageList); return NormalExcelConstants.JEECG_EXCEL_VIEW; } /** * 为“代业主采购” 导出excel,主要针对对账使用 * * @param request * @param response */ @SuppressWarnings({ "rawtypes", "unchecked" }) @RequestMapping(params = "exportXls4representOwner") public String exportXls4representOwner(POrdersEntity orders,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid,ModelMap map) { String orderId = request.getParameter("orderid"); orders = systemService.get(POrdersEntity.class,orderId); List orderDetailsEntityList = systemService.findByProperty(OrderDetailsEntity.class, "fkId", orders.getId()); WarehouseEntity warehouse = systemService.get(WarehouseEntity.class, orders.getWarehouseId()); TSDepart depart = systemService.get(TSDepart.class, warehouse.getProjectId()); String sourceId =orders.getSourceId(); OrdersEntity sourceOrder =systemService.get(OrdersEntity.class,sourceId); map.put(NormalExcelConstants.FILE_NAME,"代业主申购明细表-"+orders.getWarehouseName()+"-"+DateUtils.formatDate(sourceOrder.getOrderDate(),"yyyy-MM-dd" )); map.put(NormalExcelConstants.CLASS,OrderDetailsEntity.class); map.put(NormalExcelConstants.PARAMS,new ExportParams("代业主申购明细表", "项目:"+depart.getDepartname() +" 领料点:"+warehouse.getWarehouseName() +" 申请时间:"+ DateUtils.formatDate(orders.getCreateDate()) +" 导出人:"+ ResourceUtil.getSessionUserName().getRealName(), "物料信息")); map.put(NormalExcelConstants.DATA_LIST,orderDetailsEntityList); return NormalExcelConstants.JEECG_EXCEL_VIEW; } /** * 通过excel导入数据 * @param request * @param * @return */ @RequestMapping(params = "importExcel", method = RequestMethod.POST) @ResponseBody public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) { AjaxJson j = new AjaxJson(); MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map fileMap = multipartRequest.getFileMap(); for (Map.Entry entity : fileMap.entrySet()) { MultipartFile file = entity.getValue();// 获取上传文件对象 ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(2); params.setNeedSave(true); try { List list = ExcelImportUtil.importExcel(file.getInputStream(), POrdersPage.class, params); POrdersEntity entity1=null; for (POrdersPage page : list) { entity1=new POrdersEntity(); MyBeanUtils.copyBeanNotNull2Bean(page,entity1); ordersService.addMain(entity1, page.getOrderDetailsList()); } j.setMsg("文件导入成功!"); } catch (Exception e) { j.setMsg("文件导入失败!"); logger.error(ExceptionUtil.getExceptionMessage(e)); }finally{ try { file.getInputStream().close(); } catch (IOException e) { e.printStackTrace(); } } } return j; } /** * 导出excel 使模板 */ @RequestMapping(params = "exportXlsByT") public String exportXlsByT(ModelMap map) { map.put(NormalExcelConstants.FILE_NAME,"订单表"); map.put(NormalExcelConstants.CLASS,POrdersPage.class); map.put(NormalExcelConstants.PARAMS,new ExportParams("订单表列表", "导出人:"+ ResourceUtil.getSessionUserName().getRealName(), "导出信息")); map.put(NormalExcelConstants.DATA_LIST,new ArrayList()); return NormalExcelConstants.JEECG_EXCEL_VIEW; } /** * 导入功能跳转 * * @return */ @RequestMapping(params = "upload") public ModelAndView upload(HttpServletRequest req) { req.setAttribute("controller_name", "pOrdersController"); return new ModelAndView("common/upload/pub_excel_upload"); } @RequestMapping(method = RequestMethod.GET) @ResponseBody public List list() { List listOrderss=ordersService.getList(POrdersEntity.class); return listOrderss; } @RequestMapping(value = "/{id}", method = RequestMethod.GET) @ResponseBody public ResponseEntity get(@PathVariable("id") String id) { POrdersEntity task = ordersService.get(POrdersEntity.class, id); if (task == null) { return new ResponseEntity(HttpStatus.NOT_FOUND); } return new ResponseEntity(task, HttpStatus.OK); } @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public ResponseEntity create(@RequestBody POrdersPage ordersPage, UriComponentsBuilder uriBuilder) { //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息. Set> failures = validator.validate(ordersPage); if (!failures.isEmpty()) { return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST); } //保存 List orderDetailsList = ordersPage.getOrderDetailsList(); POrdersEntity orders = new POrdersEntity(); try{ MyBeanUtils.copyBeanNotNull2Bean(orders,ordersPage); }catch(Exception e){ logger.info(e.getMessage()); } ordersService.addMain(orders, orderDetailsList); //按照Restful风格约定,创建指向新任务的url, 也可以直接返回id或对象. String id = ordersPage.getId(); URI uri = uriBuilder.path("/api/pOrdersController/" + id).build().toUri(); HttpHeaders headers = new HttpHeaders(); headers.setLocation(uri); return new ResponseEntity(headers, HttpStatus.CREATED); } @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity update(@RequestBody POrdersPage ordersPage) { //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息. Set> failures = validator.validate(ordersPage); if (!failures.isEmpty()) { return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST); } //保存 List orderDetailsList = ordersPage.getOrderDetailsList(); POrdersEntity orders = new POrdersEntity(); try{ MyBeanUtils.copyBeanNotNull2Bean(orders,ordersPage); }catch(Exception e){ logger.info(e.getMessage()); } ordersService.updateMain(orders, orderDetailsList); //按Restful约定,返回204状态码, 无内容. 也可以返回200状态码. return new ResponseEntity(HttpStatus.NO_CONTENT); } @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) @ResponseStatus(HttpStatus.NO_CONTENT) public void delete(@PathVariable("id") String id) { POrdersEntity orders = ordersService.get(POrdersEntity.class, id); ordersService.delMain(orders); } /** * 解析SQL,返回字段集 支持多数据源 * @param sql * @return */ @SuppressWarnings({ "unchecked", "rawtypes" }) @RequestMapping(params = "getProductInfo", method = RequestMethod.POST) @ResponseBody public Object getSqlFields(String goodsCode){ TBGoodsInfoEntity goodInfo = null; TBPriceInfoEntity tBPriceInfoEntity = null; TBPriceInfoEntity tBPriceInfoEntityResult = null; Map reJson = new HashMap(); try{ //goodInfo = systemService.findUniqueByProperty(TBGoodsInfoEntity.class, "goodsCode",goodsCode); String hql_Goods = "from TBGoodsInfoEntity where 1 = 1 AND GOODS_CODE =? AND STATUS = 0 AND DELETE_FLAG = 0"; List tBGoodsInfoEntityList = systemService.findHql(hql_Goods,goodsCode); if(tBGoodsInfoEntityList != null && tBGoodsInfoEntityList.size() > 0){ goodInfo = tBGoodsInfoEntityList.get(0); if(goodInfo != null) { RelatedUnitsEntity entity = systemService.get(RelatedUnitsEntity.class, goodInfo.getDefaultProvider()); if(entity != null) { goodInfo.setSupplierName(entity.getUnitName()); } } }else{ reJson.put("status", "false"); return reJson; } //获取参数 Object id0 = goodInfo.getId(); String hql0 = "from TBPriceInfoEntity where 1 = 1 AND GOODS_ID =? "; List tBPriceInfoEntityList = systemService.findHql(hql0,id0); if(tBPriceInfoEntityList != null && tBPriceInfoEntityList.size() > 0){ for(int i = 0 ;i < tBPriceInfoEntityList.size();i++){ tBPriceInfoEntity = new TBPriceInfoEntity(); tBPriceInfoEntity = tBPriceInfoEntityList.get(i); if(goodInfo.getPurchaseUnit() != null && tBPriceInfoEntity.getMeteringUnit() != null && goodInfo.getPurchaseUnit().equals(tBPriceInfoEntity.getMeteringUnit())){ tBPriceInfoEntityResult = tBPriceInfoEntity; break; } } } }catch (Exception e) { logger.info(e.getMessage()); } reJson.put("status", "success"); reJson.put("datainfo", goodInfo); reJson.put("pricinfo", tBPriceInfoEntityResult); return reJson; } /** * 解析SQL,返回字段集 支持多数据源 * @param sql * @return */ @SuppressWarnings({ "unchecked", "rawtypes" }) @RequestMapping(params = "getPurchasePriceInfo", method = RequestMethod.POST) @ResponseBody public Object getPurchasePriceInfo(String goodsCode,String purchaseUnit){ Map reJson = new HashMap(); TBGoodsInfoEntity goodInfo = null; if(StringUtils.isNotBlank(goodsCode) && StringUtils.isNotBlank(purchaseUnit)){ TBPriceInfoEntity tBPriceInfoEntityResult = null; List unitlist = new ArrayList(); try{ goodInfo = systemService.findUniqueByProperty(TBGoodsInfoEntity.class, "goodsCode",goodsCode); String hql0 = "from TBPriceInfoEntity where 1 = 1 AND GOODS_ID = ?"; List tBPriceInfoEntityList = systemService.findHql(hql0,goodInfo.getId()); if(tBPriceInfoEntityList != null && tBPriceInfoEntityList.size() > 0){ for(TBPriceInfoEntity price : tBPriceInfoEntityList) { unitlist.add(price.getMeteringUnit()); if(purchaseUnit.equals(price.getMeteringUnit())) { tBPriceInfoEntityResult = price; } } } if(tBPriceInfoEntityResult == null) { List dictList = jeecgDictDao.querySystemDict("metering_calcu_unit"); HashMap map = new HashMap<>(); for(DictEntity dic : dictList) { map.put(dic.getTypecode(), dic.getTypename()); } StringBuffer sb = new StringBuffer(); sb.append("可选择的计量单位:【"); for(int i=0 ; i0) { sb.append("/"); } sb.append(map.get(unitlist.get(i))); } sb.append("】"); reJson.put("msg", sb.toString()); } }catch (Exception e) { reJson.put("status", "fail"); logger.info(e.getMessage()); return reJson; } reJson.put("status", "success"); reJson.put("pricinfo", tBPriceInfoEntityResult); }else{ reJson.put("status", "success"); reJson.put("pricinfo", null); } return reJson; } /** * 供应商弹出框 * * @param request * @param response * @param dataGrid * @throws ClassNotFoundException */ @SuppressWarnings({"rawtypes" }) @RequestMapping(params = "selRefDatagridUnits") public void selRefDatagridUnits(String classname, RelatedUnitsEntity relatedUnitsEntity,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception { Class cls = MyClassLoader.getClassByScn(classname); CriteriaQuery cq = new CriteriaQuery(cls, dataGrid); //自定义追加查询条件 String[] unitstate = new String[]{Globals.Enable_Normal}; cq.in("status", unitstate); cq.eq("deleteFlag", Globals.Delete_Normal.toString()); //cq.eq("unitType", Globals.AGRICULTURAL_SUPPLIERS);// 供应商 // 检索用 供应商编码 if(StringUtils.isNotBlank(relatedUnitsEntity.getUnitCode())){ cq.eq("unitCode", relatedUnitsEntity.getUnitCode()); } // 检索用 供应商名称 if(StringUtils.isNotBlank(relatedUnitsEntity.getUnitName())){ cq.eq("unitName", relatedUnitsEntity.getUnitName()); } org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, cls.newInstance()); commonDao.getDataGridReturn(cq, true); List result = dataGrid.getResults(); try { //result =systemService.dealResultShowText4Entities(dataGrid.getResults(), cls); } catch (Exception e) { throw new BusinessException(e); } dataGrid.setResults(result); TagUtil.datagrid(response, dataGrid); } /** * 供应商弹出框 * * @return */ @RequestMapping(params = "selectReferUnits") public ModelAndView selectReferUnits(HttpServletRequest request) { ModelAndView mv = new ModelAndView("cn/com/lzt/purchase/selectUnitsInfo"); 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("codefield", oConvertUtils.getString(request.getParameter("codefield"))); mv.addObject("namefield", oConvertUtils.getString(request.getParameter("namefield"))); return mv; } /** * 供应商价格 * */ @RequestMapping(params = "selectRelatedUnitPrice") public ModelAndView selectRelatedUnitPrice(HttpServletRequest request) { ModelAndView mv = new ModelAndView("cn/com/lzt/purchase/selectRelatedUnitPrice"); String ids = oConvertUtils.getString(request.getParameter("ids")); mv.addObject("ids", ids); // 需要将前端的参数传递到refer页面 mv.addObject("refid", oConvertUtils.getString(request.getParameter("refid"))); mv.addObject("reftype", oConvertUtils.getString(request.getParameter("reftype"))); return mv; } @SuppressWarnings({"rawtypes" }) @RequestMapping(params = "selRefDatagridRelatedUnit") public void selRefDatagridRelatedUnit(String refid, String reftype,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception { TBGoodsRelatedUnitPriceEntity ruprice = new TBGoodsRelatedUnitPriceEntity(); String classname = ""; String refidFiled = ""; if(reftype.equals("goods")) { classname = TBGoodsRelatedUnitPriceEntity.class.getName(); refidFiled = "goodsId"; }else if (reftype.equals("clothing")) { classname = TBClothingRelatedUnitPriceEntity.class.getName(); refidFiled = "clothingId"; }else { return; } Class cls = MyClassLoader.getClassByScn(classname); CriteriaQuery cq = new CriteriaQuery(cls, dataGrid); cq.eq(refidFiled, refid); cq.add(); commonDao.getDataGridReturn(cq, true); // List result = dataGrid.getResults(); // try { // } catch (Exception e) { // throw new BusinessException(e); // } // dataGrid.setResults(result); TagUtil.datagrid(response, dataGrid); } /** * 根据货品名称获取货品信息 * * @param request * @param response * @param dataGrid * @throws ClassNotFoundException */ @SuppressWarnings("rawtypes") @RequestMapping(params = "selRefDatagridGoods") public void selRefDatagridGoods(String classname, TBGoodsInfoEntity tBGoodsInfoEntity,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception { Class cls = MyClassLoader.getClassByScn(classname); CriteriaQuery cq = new CriteriaQuery(cls, dataGrid); //查询条件组装器 //自定义追加查询条件 String[] unitstate = new String[]{Globals.Enable_Normal}; cq.in("status", unitstate); cq.eq("deleteFlag", Globals.Delete_Normal.toString()); // 检索用货品分类编码 if(StringUtils.isNotBlank(tBGoodsInfoEntity.getBelongCategoryCode())){ //模糊查询 cq.like("belongCategoryCode", "%"+tBGoodsInfoEntity.getBelongCategoryCode()+"%"); } // 检索用货品名称 if(StringUtils.isNotBlank(tBGoodsInfoEntity.getGoodsName())){ //模糊查询 cq.like("goodsName", "%"+tBGoodsInfoEntity.getGoodsName()+"%"); } org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, cls.newInstance()); commonDao.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.setGoodsDesc(tBPriceInfoEntity.getRetailPrice().toString()); break; } } } } } try { //result =systemService.dealResultShowText4Entities(dataGrid.getResults(), cls); } catch (Exception e) { throw new BusinessException(e); } dataGrid.setResults(result); TagUtil.datagrid(response, dataGrid); } /** * @param categoryName * @param categoryName * @return */ 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; } /** * 选择会员跳转页面 * * @return */ @RequestMapping(params = "selectReferGoods") public ModelAndView selectReferGoods(HttpServletRequest request) { ModelAndView mv = new ModelAndView("cn/com/lzt/purchase/selectGoodsInfo"); 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("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; } /** * 仓库弹出框 * @param request * @param response * @param dataGrid * @throws ClassNotFoundException */ @SuppressWarnings({"rawtypes" }) @RequestMapping(params = "selRefDatagridWareHouse") public void selRefDatagridWareHouse(String classname,WarehouseEntity warehouse,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception { Class cls = MyClassLoader.getClassByScn(classname); CriteriaQuery cq = new CriteriaQuery(cls, dataGrid); //自定义追加查询条件 String[] unitstate = new String[]{Globals.Enable_Normal}; cq.in("status", unitstate); cq.eq("deleteFlag", Globals.Delete_Normal.toString()); // 检索用仓库编码 if(StringUtils.isNotBlank(warehouse.getWarehouseCode())){ cq.eq("warehouseCode", warehouse.getWarehouseCode()); } // 检索用仓库名称 if(StringUtils.isNotBlank(warehouse.getWarehouseName())){ cq.eq("warehouseName", warehouse.getWarehouseName()); } org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, cls.newInstance()); commonDao.getDataGridReturn(cq, true); List result = dataGrid.getResults(); try { //result =systemService.dealResultShowText4Entities(dataGrid.getResults(), cls); } catch (Exception e) { throw new BusinessException(e); } dataGrid.setResults(result); TagUtil.datagrid(response, dataGrid); } /** * 加载申购单服务 * 查询存在未采购完成的申购单 * */ @SuppressWarnings({"rawtypes" }) @RequestMapping(params = "selRefDatagridQGD") public void selRefDatagridQGD(OrdersEntity qgd,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception { Class cls = MyClassLoader.getClassByScn(OrdersEntity.class.getName()); CriteriaQuery cq = new CriteriaQuery(cls, dataGrid); String sql_orderDetail = "select distinct fk_id from t_b_order_products detail where ifnull(detail.quantity_arrived,0) < detail.quantity"; List order_ids = systemService.findListbySql(sql_orderDetail); //自定义追加查询条件:已审批 String[] unitstate = new String[]{"3"}; cq.in("bpmStatus", unitstate); if(order_ids != null && order_ids.size()>0) { //自定义追加查询条件:未采购完毕 cq.in("id",order_ids.toArray(new String[]{})); cq.addOrder("createDate", SortDirection.desc); // 仓库过滤 if(StringUtils.isNotBlank(qgd.getWarehouseId())){ cq.eq("warehouseId", qgd.getWarehouseId()); } // 申购月度过滤 if(StringUtils.isNotBlank(qgd.getOrderMonths())){ cq.eq("orderMonths", qgd.getOrderMonths()); } cq.add(); List result = systemService.getListByCriteriaQuery(cq, false); dataGrid.setResults(result); }else { List result = new ArrayList<>(); dataGrid.setResults(result); } TagUtil.datagrid(response, dataGrid); } /** * 仓库弹出框 * @return */ @RequestMapping(params = "selectReferWareHouse") public ModelAndView selectReferWareHouse(HttpServletRequest request) { ModelAndView mv = new ModelAndView("cn/com/lzt/purchase/selectWareHouseInfo"); 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("codefield", oConvertUtils.getString(request.getParameter("codefield"))); mv.addObject("namefield", oConvertUtils.getString(request.getParameter("namefield"))); return mv; } /** * 经手人弹出框 * @param request * @param response * @param dataGrid * @throws ClassNotFoundException */ @SuppressWarnings({"rawtypes" }) @RequestMapping(params = "selRefDatagridHandlerPerson") public void selRefDatagridHandlerPerson(String classname,TSBaseUser tSBaseUser,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception { // Class cls = MyClassLoader.getClassByScn(classname); // CriteriaQuery cq = new CriteriaQuery(cls, dataGrid); // //自定义追加查询条件 // Short[] status = new Short[]{Globals.ONLINE,Globals.OFFLINE}; // cq.in("status", status); // cq.eq("deleteFlag", Globals.Delete_Normal); // // 检索用仓库编码 // if(StringUtils.isNotBlank(tSBaseUser.getUserName())){ // cq.eq("userName", tSBaseUser.getUserName()); // } // // 检索用仓库名称 // if(StringUtils.isNotBlank(tSBaseUser.getRealName())){ // cq.eq("realName", tSBaseUser.getRealName()); // } // org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, cls.newInstance()); // commonDao.getDataGridReturn(cq, true); // List result = dataGrid.getResults(); // try { // //result =systemService.dealResultShowText4Entities(dataGrid.getResults(), cls); // } catch (Exception e) { // throw new BusinessException(e); // } // dataGrid.setResults(result); // TagUtil.datagrid(response, dataGrid); } /** * 经手人弹出框 * @return */ @RequestMapping(params = "selectReferHandlerPerson") public ModelAndView selectReferHandlerPerson(HttpServletRequest request) { ModelAndView mv = new ModelAndView("cn/com/lzt/purchase/selectHandlerPersonInfo"); 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("codefield", oConvertUtils.getString(request.getParameter("codefield"))); mv.addObject("namefield", oConvertUtils.getString(request.getParameter("namefield"))); return mv; } /** * 物流弹出框 * @param request * @param response * @param dataGrid * @throws ClassNotFoundException */ @SuppressWarnings({"rawtypes" }) @RequestMapping(params = "selRefDatagridLogistics") public void selRefDatagridLogistics(String classname,TBLogisticsEntity tBLogisticsEntity,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception { Class cls = MyClassLoader.getClassByScn(classname); CriteriaQuery cq = new CriteriaQuery(cls, dataGrid); //自定义追加查询条件 String[] unitstate = new String[]{Globals.Enable_Normal}; cq.in("status", unitstate); cq.eq("deleteFlag", Globals.Delete_Normal.toString()); // 检索用仓库编码 if(StringUtils.isNotBlank(tBLogisticsEntity.getCompanyCode())){ cq.eq("companyCode", tBLogisticsEntity.getCompanyCode()); } // 检索用仓库名称 if(StringUtils.isNotBlank(tBLogisticsEntity.getCompanyName())){ cq.eq("companyName", tBLogisticsEntity.getCompanyName()); } org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, cls.newInstance()); commonDao.getDataGridReturn(cq, true); List result = dataGrid.getResults(); try { //result =systemService.dealResultShowText4Entities(dataGrid.getResults(), cls); } catch (Exception e) { throw new BusinessException(e); } dataGrid.setResults(result); TagUtil.datagrid(response, dataGrid); } /** * 物流弹出框 * @return */ @RequestMapping(params = "selectReferLogistics") public ModelAndView selectReferLogistics(HttpServletRequest request) { ModelAndView mv = new ModelAndView("cn/com/lzt/purchase/selectLogisticsInfo"); 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("codefield", oConvertUtils.getString(request.getParameter("codefield"))); mv.addObject("namefield", oConvertUtils.getString(request.getParameter("namefield"))); return mv; } /** * 取消采购单 * * @author guoqing.yan */ @RequestMapping(params = "doCancel") @ResponseBody public AjaxJson doCancel(String id, HttpServletRequest req) { AjaxJson j = new AjaxJson(); String message = null; POrdersEntity orders = ordersService.getEntity(POrdersEntity.class, id); try{ // 未审批和已经审批的可以取消 if(orders.getOrderStatus() != null &&(orders.getOrderStatus().equals(Globals.UNAPPROVED) || orders.getOrderStatus().equals(Globals.APPROVED))){ orders.setOrderStatus(Globals.CANCELED);//订单状态: 取消 ordersService.updateEntitie(orders); message = "单号:" + orders.getOrderOnumber() + "取消成功!"; systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO); }else{ message = "该单不能取消,请确认!"; } }catch(Exception e){ message = "操作失败!"; } j.setMsg(message); return j; } /** * 取消采购单 * * @author guoqing.yan */ @RequestMapping(params = "doCancelAuditOrder") @ResponseBody public AjaxJson doCancelAuditOrder(String id,String refundvalue, HttpServletRequest req) { AjaxJson j = new AjaxJson(); POrdersEntity orders = ordersService.get(POrdersEntity.class, id); ordersService.delMain(orders); String message = "取消成功!"; //POrdersEntity orders = ordersService.getEntity(POrdersEntity.class, id); // try{ // // 首先判断该订单是否入库,如果入库则不能取消 // Long godownOrderCount = systemService.getCountForJdbc("select count(1) from t_b_godown_entry where purchase_order_no='" + orders.getOrderOnumber() + "'"); // // 未入库时候 // if(godownOrderCount <=0){ // if(StringUtils.isNotBlank(refundvalue)){ // // 退的预付定金额 // Double refundMoney = Double.parseDouble(refundvalue); // CollectMiddleEntity collectMiddleEntity = new CollectMiddleEntity(); // collectMiddleEntity.setUnitId(orders.getSupplierId());// 供应商ID // collectMiddleEntity.setCollectionOrderOnumber(orders.getOrderOnumber());//订单号 // collectMiddleEntity.setCollectionType(Globals.DEPOSIT_REFUND);// 预付定金退款 // collectMiddleEntity.setAmountReceivable(refundMoney); // collectMiddleService.saveOrUpdate(collectMiddleEntity); // // 更新 往来单位表中的 应收余额 // RelatedUnitsEntity relatedUnitsEntity = relatedUnitsService.get(RelatedUnitsEntity.class, orders.getSupplierId()); // if(relatedUnitsEntity.getAmountReceivable() != null){ // relatedUnitsEntity.setPrepaidBalance(refundMoney + relatedUnitsEntity.getAmountReceivable());// 预付余额 // }else{ // relatedUnitsEntity.setPrepaidBalance(refundMoney);// 预付余额 // } // relatedUnitsService.updateEntitie(relatedUnitsEntity); // } // // 未审批和已经审批的可以取消 // if(orders.getOrderStatus() != null && !orders.getOrderStatus().equals(Globals.CANCELED)){ // orders.setOrderStatus(Globals.CANCELED);//订单状态: 取消 // ordersService.updateEntitie(orders); // message = "单号:" + orders.getOrderOnumber() + "取消成功!"; // systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO); // }else{ // message = "该单已经取消,请确认!"; // } // // 已经入库的时候 // }else{ // message = "该订单已经入库,不能取消,请确认!"; // } // // }catch(Exception e){ // message = "操作失败!"; // } j.setMsg(message); return j; } /** * 审核通过 采购单 * * @author guoqing.yan */ @RequestMapping(params = "doAudit") @ResponseBody public AjaxJson doAudit(String id, HttpServletRequest req) { AjaxJson j = new AjaxJson(); String message = null; POrdersEntity orders = ordersService.getEntity(POrdersEntity.class, id); try{ // 未审批和已经审批的可以取消 if(orders.getOrderStatus() != null &&orders.getOrderStatus().equals(Globals.UNAPPROVED)){ // 预付定金 不为空的时候 if(orders.getPrepaidMoney() != null && orders.getPrepaidMoney() >0){ // 更新 付款明细中间表 // PaymentMiddleEntity paymentMiddleEntity = new PaymentMiddleEntity(); // paymentMiddleEntity.setUnitId(orders.getSupplierId());// 供应商ID // paymentMiddleEntity.setPaymentDate(new Date());// 应付款发生日期 // paymentMiddleEntity.setPaymentOrderOnumber(orders.getOrderOnumber());// 应付款单据编号 // paymentMiddleEntity.setPaymentType(Globals.PURCHASE_ADVANCE_PAYMENT);// 应付款类型 采购预付款 // paymentMiddleEntity.setHandlerPerson(orders.getHandlerPersonId());// 经手人 // paymentMiddleEntity.setAmountPayable(orders.getPrepaidMoney());// 应付定金 // paymentMiddleService.save(paymentMiddleEntity); // 更新 往来单位表中的 预付余额 RelatedUnitsEntity relatedUnitsEntity = relatedUnitsService.get(RelatedUnitsEntity.class, orders.getSupplierId()); if(relatedUnitsEntity.getPrepaidBalance() != null){ relatedUnitsEntity.setPrepaidBalance(orders.getPrepaidMoney() + relatedUnitsEntity.getPrepaidBalance());// 预付余额 }else{ relatedUnitsEntity.setPrepaidBalance(orders.getPrepaidMoney());// 预付余额 } relatedUnitsService.updateEntitie(relatedUnitsEntity); } // 采购单审核状态更新 ordersService.updateEntitie(orders); HttpSession session = ContextHolderUtils.getSession(); TSUser tuser = (TSUser)session.getAttribute("LOCAL_CLINET_USER"); orders.setAuditDate(new Date()); orders.setOrderAuditor(tuser.getRealName()); orders.setOrderStatus(Globals.APPROVED);//订单状态: 已审批 message = "单号:" + orders.getOrderOnumber() + "已生效!"; systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO); }else{ message = "该单已经取消或者已生效,不能提交生效,请确认!"; } }catch(Exception e){ message = "操作失败!"; } j.setMsg(message); return j; } @RequestMapping(params = "selectPorder") public ModelAndView selectPorder(HttpServletRequest request) { ModelAndView mv = new ModelAndView("cn/com/lzt/purchase/selectPOrderList"); return mv; } /** * 加载采购单(已经添加到物料采购的采购单就不再提示了) * 查询存在未全部到货完成的采购单 * */ @SuppressWarnings({"rawtypes" }) @RequestMapping(params = "selRefDatagridPOrder") public void selRefDatagridPOrder(POrdersEntity order,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception { Class cls = MyClassLoader.getClassByScn(POrdersEntity.class.getName()); CriteriaQuery cq = new CriteriaQuery(cls, dataGrid); //领料点权限 HttpSession session = ContextHolderUtils.getSession(); TSUser tuser = (TSUser)session.getAttribute("LOCAL_CLINET_USER"); String sql_orderDetail = "select distinct fk_id from t_b_porder_details detail " + " left join t_b_porders f on f.id = detail.fk_id " + " left join t_b_warehouse ware on ware.id = f.warehouse_id " + " where detail.quantity_not_arrived > 0 and ware.responsible_person = '"+ tuser.getId()+"' "; List order_ids = systemService.findListbySql(sql_orderDetail); if(order_ids != null && order_ids.size()>0) { //自定义追加查询条件:未采购完毕 cq.in("id",order_ids.toArray(new String[]{})); cq.addOrder("createDate", SortDirection.desc); // 仓库过滤 if(StringUtils.isNotBlank(order.getWarehouseId())){ cq.eq("warehouseId", order.getWarehouseId()); } cq.add(); List result = systemService.getListByCriteriaQuery(cq, false); dataGrid.setResults(result); }else { List result = new ArrayList<>(); dataGrid.setResults(result); } TagUtil.datagrid(response, dataGrid); } /** * 加载采购单明细 * 查询存在未全部到货完成的采购单明细 * */ @SuppressWarnings({"rawtypes" }) @RequestMapping(params = "selRefDatagridPOrderDetail") public void selRefDatagridPOrderDetail(POrdersEntity order,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception { Class cls = MyClassLoader.getClassByScn(OrderDetailsEntity.class.getName()); CriteriaQuery cq = new CriteriaQuery(cls, dataGrid); String hql_orderDetail = "from OrderDetailsEntity where fkId =? and quantityNotArrived > 0"; List details = systemService.findHql(hql_orderDetail,order.getId()); dataGrid.setResults(details); TagUtil.datagrid(response, dataGrid); } /** * 选择物料类其他签报 * @param request * @return */ @RequestMapping(params = "selectFixAsset") public ModelAndView selectFixAsset(HttpServletRequest request) { ModelAndView mv = new ModelAndView("cn/com/lzt/purchase/selectFixAssetInfo"); String ids = oConvertUtils.getString(request.getParameter("ids")); mv.addObject("ids", ids); return mv; } /** * 加载物料类其他签报 * */ @SuppressWarnings({"rawtypes" }) @RequestMapping(params = "selectFixAssetDatagrid") public void selectFixAssetDatagrid(OrdersFixAssetEntity entity, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception { CriteriaQuery cq = new CriteriaQuery(OrdersFixAssetEntity.class, dataGrid); String sql_orderDetail = "select distinct fk_id from t_b_order_fix_asset_products detail where ifnull(detail.quantity_arrived,0) < detail.quantity"; List order_ids = systemService.findListbySql(sql_orderDetail); //自定义追加查询条件:已审批 String[] unitstate = new String[]{"3"}; cq.in("bpmStatus", unitstate); cq.eq("orderFor", "0");//只能选公司采购,自行采购自动生成采购单 if(order_ids != null && order_ids.size()>0) { //自定义追加查询条件:未采购完毕 cq.in("id",order_ids.toArray(new String[]{})); cq.addOrder("createDate", SortDirection.desc); // 仓库过滤 if(StringUtils.isNotBlank(entity.getWarehouseId())){ cq.eq("warehouseId", entity.getWarehouseId()); } cq.add(); List result = systemService.getListByCriteriaQuery(cq, false); dataGrid.setResults(result); }else { List result = new ArrayList<>(); dataGrid.setResults(result); } TagUtil.datagrid(response, dataGrid); } /** * 导出乐忆excel * * @param request * @param response */ @SuppressWarnings({ "rawtypes", "unchecked" }) @RequestMapping(params = "exportQingyuXls") public String exportQingyuXls(String orderid,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid,ModelMap map) { List list = getQingyuList(orderid); map.put(NormalExcelConstants.FILE_NAME,"美都环卫物业清羽工贸送货清单"); map.put(NormalExcelConstants.CLASS,OrderToQingyuDto.class); ExportParams params = new ExportParams("美都环卫物业清羽工贸送货清单", "日期:", "清羽工贸送货清单"); params.setAddIndex(true); map.put(NormalExcelConstants.PARAMS,params); map.put(NormalExcelConstants.DATA_LIST,list); return NormalExcelConstants.JEECG_EXCEL_VIEW; } /** * @param orderid * @return */ private List getQingyuList(String ids) { HashMap hm_warehouse2dto = new HashMap<>(); if(ids != null) { String[] splits = ids.split(","); if(splits.length > 0) { for(String id:ids.split(",")){ POrdersEntity orders = systemService.getEntity(POrdersEntity.class,id); if(orders != null) { String orderid = orders.getId(); String hql0 = "from OrderDetailsEntity where 1 = 1 AND fK_ID =? "; try{ List orderDetailsEntityList = systemService.findHql(hql0,orderid); for(OrderDetailsEntity entity : orderDetailsEntityList) { String supplier = orders.getWarehouseId(); OrderToQingyuDto dto = getOrderToQingyuDto(supplier, hm_warehouse2dto); dealDeliverListData(orders, entity, dto); } }catch(Exception e){ logger.info(e.getMessage()); } } } } } return new ArrayList(hm_warehouse2dto.values()); } private OrderToQingyuDto getOrderToQingyuDto(String supplier, HashMap hm_supplier2Dto) { OrderToQingyuDto dto = hm_supplier2Dto.get(supplier); if(dto == null) { dto = new OrderToQingyuDto(); hm_supplier2Dto.put(supplier, dto); } return dto; } /** * @param orders * @param entity * @param dto */ private void dealDeliverListData(POrdersEntity orders, OrderDetailsEntity entity, OrderToDeliverListDto dto) { if(StringUtil.isEmpty(dto.getWarehouseId())) { dto.setWarehouseId(orders.getWarehouseId()); } if(StringUtil.isEmpty(dto.getWarehouseName())) { dto.setWarehouseName(orders.getWarehouseName()); } if(StringUtil.isEmpty(dto.getWarehouseAddr())){ String warehouseid = orders.getWarehouseId(); WarehouseEntity warehouse = systemService.get(WarehouseEntity.class, warehouseid); dto.setWarehouseAddr(warehouse.getWarehouseAddress()); // String responsiblePerson = warehouse.getResponsiblePerson(); // TSUser user = systemService.get(TSUser.class, responsiblePerson); dto.setWarehouseContact(warehouse.getShoujianren()); dto.setWarehousePhone(warehouse.getShoujianrenPhone()); } String goodsid = entity.getGoodsId(); TBGoodsInfoEntity goodsEntity = systemService.get(TBGoodsInfoEntity.class, goodsid); setValueByAnnotation(dto,orders, entity, goodsEntity); } /** * 通過反射和注解的方式獲取訂單貨品數量 * @param dtoclass * @param orders * @param entity * @param goodsEntity */ private void setValueByAnnotation(OrderToDeliverListDto dto, POrdersEntity orders, OrderDetailsEntity entity, TBGoodsInfoEntity goodsEntity) { Field[] fields = dto.getClass().getDeclaredFields(); for(int i=0 ; i data = LztUtil.copyReqAttributes(new String[]{"entity", "taskId"}); String flag = req.getParameter("flag"); data.put("flag",flag==null?-1:Integer.valueOf(flag)); return new JsonDataModelAndView(WXAjaxJson.success(data)); } return new ModelAndView("cn/com/lzt/useractiviti/exchange/exchange_view_mobile"); } @RequestMapping(params="exportDetailPdf4Mobile") public void exportDetailPdf4Mobile(@RequestParam("procInstId") String procInstId, HttpServletResponse response){ ActivitiTools tools = ActivitiTools.getInstance(procInstId); if(tools!=null){ tools.getPdfExport().procInstId(null); tools.exportToResponse(response); } } }