Browse Source

会员卡导入导出

gqx 2 years ago
parent
commit
d87128ede6

+ 1 - 1
jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/controller/JeecgController.java

@@ -42,7 +42,7 @@ public class JeecgController<T, S extends IService<T>> {
     protected S service;
 
     @Value("${jeecg.path.upload}")
-    private String upLoadPath;
+    protected String upLoadPath;
     /**
      * 导出excel
      *

+ 140 - 3
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMemberCardController.java

@@ -1,21 +1,32 @@
 package org.jeecg.modules.business.controller;
 
+import java.io.IOException;
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
+import com.alibaba.druid.support.json.JSONUtils;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.formula.functions.T;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.business.dto.UserGroupDto;
 import org.jeecg.modules.business.dto.UserLabelDto;
 import org.jeecg.modules.business.entity.*;
@@ -28,8 +39,17 @@ import lombok.extern.slf4j.Slf4j;
 import org.jeecg.modules.business.vo.MemberCardStatVo;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.modules.mall.entity.MallUserInfo;
+import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.service.ISysUserService;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
 import org.springframework.beans.factory.annotation.Autowired;
 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 io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -58,6 +78,8 @@ public class BusMemberCardController extends JeecgController<BusMemberCard, IBus
 	 private IBusMarketMemberLableService busMarketMemberLableService;
 	 @Resource
 	 private IService<MallUserInfo> mallUserInfoIService;
+	 @Resource
+	 private ISysUserService sysUserService;
 	/**
 	 * 分页列表查询
 	 *
@@ -282,9 +304,50 @@ public class BusMemberCardController extends JeecgController<BusMemberCard, IBus
     //@RequiresPermissions("business:bus_member_card:exportXls")
     @RequestMapping(value = "/exportXls")
     public ModelAndView exportXls(HttpServletRequest request, BusMemberCard busMemberCard) {
-        return super.exportXls(request, busMemberCard, BusMemberCard.class, "bus_member_card");
+        return exportXls2(request, busMemberCard, BusMemberCard.class, "会员列表");
     }
 
+	private ModelAndView exportXls2(HttpServletRequest request, BusMemberCard object, Class<BusMemberCard> clazz, String title) {
+		// Step.1 组装查询条件
+		QueryWrapper<BusMemberCard> queryWrapper = QueryGenerator.initQueryWrapper(object, request.getParameterMap());
+		LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+
+		// 过滤选中数据
+		String selections = request.getParameter("selections");
+		if (oConvertUtils.isNotEmpty(selections)) {
+			List<String> selectionList = Arrays.asList(selections.split(","));
+			queryWrapper.in("id", selectionList);
+		}
+		// Step.2 获取导出数据
+		List<BusMemberCard> exportList = service.list(queryWrapper);
+		exportList.forEach(t -> {
+			BusHotel busHotel = busHotelService.getById(t.getHotelId());
+			if (busHotel != null) {
+				t.setHotelId(busHotel.getName());
+			}
+			BusMarketMember busMarketMember = busMarketMemberService.getById(t.getGradeId());
+			if (busMarketMember != null) {
+				t.setGradeId(busMarketMember.getName());
+			}
+			SysUser sysUser1=sysUserService.getById(t.getStaffId());
+			if(sysUser1!=null) {
+				t.setStaffId(sysUser1.getRealname());
+			}
+		});
+		// Step.3 AutoPoi 导出Excel
+		ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+		//此处设置的filename无效 ,前端会重更新设置一下
+		mv.addObject(NormalExcelConstants.FILE_NAME, title);
+		mv.addObject(NormalExcelConstants.CLASS, clazz);
+		//update-begin--Author:liusq  Date:20210126 for:图片导出报错,ImageBasePath未设置--------------------
+		ExportParams exportParams = new ExportParams(title + "报表", "导出人:" + sysUser.getRealname(), title);
+		exportParams.setImageBasePath(this.upLoadPath);
+		//update-end--Author:liusq  Date:20210126 for:图片导出报错,ImageBasePath未设置----------------------
+		mv.addObject(NormalExcelConstants.PARAMS, exportParams);
+		mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
+		return mv;
+	}
+
     /**
       * 通过excel导入数据
     *
@@ -294,8 +357,82 @@ public class BusMemberCardController extends JeecgController<BusMemberCard, IBus
     */
     //@RequiresPermissions("business:bus_member_card:importExcel")
     @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
-    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
-        return super.importExcel(request, response, BusMemberCard.class);
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response,@RequestParam(name="hotelId",required=true) String hotelId) {
+        return importExcel2(request, response, BusMemberCard.class,hotelId);
     }
 
+
+	private Result<?> importExcel2(HttpServletRequest request, HttpServletResponse response, Class<BusMemberCard> clazz,String hotelId) {
+		LoginUser user = TokenUtils.getAuthUser();
+		if (user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")) {
+		} else {
+			throw new JeecgBootException("当前登录人租户信息错误");
+		}
+		MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+		Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+		for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+			// 获取上传文件对象
+			MultipartFile file = entity.getValue();
+			ImportParams params = new ImportParams();
+			params.setTitleRows(2);
+			params.setHeadRows(1);
+			params.setNeedSave(true);
+			try {
+				List<BusMemberCard> list = ExcelImportUtil.importExcel(file.getInputStream(), clazz, params);
+//				log.info(JSON.toJSONString(list));
+				//update-begin-author:taoyan date:20190528 for:批量插入数据
+				long start = System.currentTimeMillis();
+
+				List<BusMemberCard> addList = new ArrayList<>();
+				list.forEach(t -> {
+					if (StringUtils.isNotBlank(t.getGradeId())) {
+						LambdaQueryWrapper<BusMemberCard> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
+						lambdaQueryWrapper2.eq(BusMemberCard::getHotelId, hotelId);
+						lambdaQueryWrapper2.and(o -> {
+							o.or().eq(BusMemberCard::getCardNo, t.getCardNo());
+							o.or().eq(BusMemberCard::getMobile, t.getMobile());
+							o.or().eq(BusMemberCard::getCertificateNo, t.getCertificateNo());
+						});
+						Long count = busMemberCardService.count(lambdaQueryWrapper2);
+						if (count == 0) {
+							LambdaQueryWrapper<BusMarketMember> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+							lambdaQueryWrapper.eq(BusMarketMember::getHotelId, hotelId);
+							lambdaQueryWrapper.eq(BusMarketMember::getName, t.getGradeId());
+							List<BusMarketMember> busMarketMembers = busMarketMemberService.list(lambdaQueryWrapper);
+							if (ObjectUtils.isNotEmpty(busMarketMembers)) {
+								t.setGradeId(busMarketMembers.get(0).getId());
+							}
+							t.setCreateTime(DateTime.now());
+							t.setHotelId(hotelId);
+							t.setTenantId(user.getRelTenantIds());
+							addList.add(t);
+						}
+					}
+				});
+				service.saveBatch(addList);
+				//400条 saveBatch消耗时间1592毫秒  循环插入消耗时间1947毫秒
+				//1200条  saveBatch消耗时间3687毫秒 循环插入消耗时间5212毫秒
+				log.info("消耗时间" + (System.currentTimeMillis() - start) + "毫秒");
+				//update-end-author:taoyan date:20190528 for:批量插入数据
+				return Result.ok("文件导入成功!数据行数:" + addList.size());
+			} catch (Exception e) {
+				//update-begin-author:taoyan date:20211124 for: 导入数据重复增加提示
+				String msg = e.getMessage();
+				log.error(msg, e);
+				if (msg != null && msg.indexOf("Duplicate entry") >= 0) {
+					return Result.error("文件导入失败:有重复数据!");
+				} else {
+					return Result.error("文件导入失败:" + e.getMessage());
+				}
+				//update-end-author:taoyan date:20211124 for: 导入数据重复增加提示
+			} finally {
+				try {
+					file.getInputStream().close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+		}
+		return Result.error("文件导入失败!");
+	}
 }

+ 18 - 17
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMemberCard.java

@@ -32,14 +32,15 @@ public class BusMemberCard implements Serializable {
 
 	/**主键*/
 	@TableId(type = IdType.ASSIGN_ID)
+    @Excel(name = "用户id", width = 15)
     @ApiModelProperty(value = "主键")
     private String id;
 	/**关联租户*/
-	@Excel(name = "关联租户", width = 15)
+//	@Excel(name = "关联租户", width = 15)
     @ApiModelProperty(value = "关联租户")
     private String tenantId;
 	/**关联酒店*/
-	@Excel(name = "关联酒店", width = 15)
+	@Excel(name = "商家", width = 15)
     @ApiModelProperty(value = "关联酒店")
     private String hotelId;
 	/**手机号*/
@@ -51,23 +52,23 @@ public class BusMemberCard implements Serializable {
     @ApiModelProperty(value = "会员卡号")
     private String cardNo;
 	/**卡内码*/
-	@Excel(name = "卡内码", width = 15)
+//	@Excel(name = "卡内码", width = 15)
     @ApiModelProperty(value = "卡内码")
     private String cardInnerNo;
 	/**等级类型*/
-	@Excel(name = "等级类型", width = 15)
+	@Excel(name = "会员类型", width = 15)
     @ApiModelProperty(value = "等级类型")
     private String gradeId;
 	/**会员费*/
-	@Excel(name = "会员费", width = 15)
+//	@Excel(name = "会员费", width = 15)
     @ApiModelProperty(value = "会员费")
     private BigDecimal memberFee;
 	/**付款类型*/
-	@Excel(name = "付款类型", width = 15)
+//	@Excel(name = "付款类型", width = 15)
     @ApiModelProperty(value = "付款类型")
     private Integer payType;
 	/**付款方式*/
-	@Excel(name = "付款方式", width = 15)
+//	@Excel(name = "付款方式", width = 15)
     @ApiModelProperty(value = "付款方式")
     private String paymentMethod;
 	/**会员姓名*/
@@ -75,7 +76,7 @@ public class BusMemberCard implements Serializable {
     @ApiModelProperty(value = "会员姓名")
     private String name;
 	/**头像*/
-	@Excel(name = "头像", width = 15)
+//	@Excel(name = "头像", width = 15)
     @ApiModelProperty(value = "头像")
     private String avatar;
 	/**性别*/
@@ -83,7 +84,7 @@ public class BusMemberCard implements Serializable {
     @ApiModelProperty(value = "性别")
     private Integer sex;
 	/**证件类型*/
-	@Excel(name = "证件类型", width = 15)
+//	@Excel(name = "证件类型", width = 15)
     @ApiModelProperty(value = "证件类型")
     private Integer certificateType;
 	/**证件号*/
@@ -91,25 +92,25 @@ public class BusMemberCard implements Serializable {
     @ApiModelProperty(value = "证件号")
     private String certificateNo;
 	/**地址*/
-	@Excel(name = "地址", width = 15)
+//	@Excel(name = "地址", width = 15)
     @ApiModelProperty(value = "地址")
     private String address;
 	/**消费密码*/
-	@Excel(name = "消费密码", width = 15)
+//	@Excel(name = "消费密码", width = 15)
     @ApiModelProperty(value = "消费密码")
     private String consumePassword;
 	/**有效期*/
-	@Excel(name = "有效期", width = 15)
+//	@Excel(name = "有效期", width = 15)
     @ApiModelProperty(value = "有效期")
     private Integer validity;
 	/**有效期截止日期*/
-	@Excel(name = "有效期截止日期", width = 15, format = "yyyy-MM-dd")
+//	@Excel(name = "有效期截止日期", width = 15, format = "yyyy-MM-dd")
 	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
     @DateTimeFormat(pattern="yyyy-MM-dd")
     @ApiModelProperty(value = "有效期截止日期")
     private Date validityEndTime;
 	/**备注*/
-	@Excel(name = "备注", width = 15)
+//	@Excel(name = "备注", width = 15)
     @ApiModelProperty(value = "备注")
     private String remark;
 	/**推荐员工*/
@@ -130,15 +131,15 @@ public class BusMemberCard implements Serializable {
     @ApiModelProperty(value = "创建时间")
     private Date createTime;
     /**分组id*/
-    @Excel(name = "分组id", width = 15)
+    @Excel(name = "分组", width = 15)
     @ApiModelProperty(value = "分组id")
     private String groupId;
     /**标签id*/
-    @Excel(name = "标签id", width = 15)
+    @Excel(name = "标签", width = 15)
     @ApiModelProperty(value = "标签id")
     private String labelId;
     /**商城用户id*/
-    @Excel(name = "商城用户id", width = 15)
+//    @Excel(name = "商城用户id", width = 15)
     @ApiModelProperty(value = "商城用户id")
     private String userId;
 

+ 32 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/controller/FwRoomExamineController.java

@@ -7,11 +7,16 @@ import java.util.stream.Collectors;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.business.entity.BusLivingCustomer;
+import org.jeecg.modules.business.entity.BusRoomsLivingOrder;
+import org.jeecg.modules.business.service.IBusLivingCustomerService;
+import org.jeecg.modules.business.service.IBusRoomsLivingOrderService;
 import org.jeecg.modules.fw.entity.FwRoomExamine;
 import org.jeecg.modules.fw.service.IFwRoomExamineService;
 
@@ -20,6 +25,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 
+import org.jeecg.modules.rooms.Enum.RoomStatusEnum;
+import org.jeecg.modules.rooms.entity.CesRooms;
+import org.jeecg.modules.rooms.service.CesRoomsServiceImpl;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
@@ -50,6 +58,12 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
 public class FwRoomExamineController extends JeecgController<FwRoomExamine, IFwRoomExamineService> {
 	@Autowired
 	private IFwRoomExamineService fwRoomExamineService;
+	@Resource
+	private IBusRoomsLivingOrderService busRoomsLivingOrderService;
+	@Resource
+	private CesRoomsServiceImpl cesRoomsService;
+	@Resource
+	private IBusLivingCustomerService busLivingCustomerService;
 
 	/**
 	 * 分页列表查询
@@ -70,9 +84,27 @@ public class FwRoomExamineController extends JeecgController<FwRoomExamine, IFwR
 		QueryWrapper<FwRoomExamine> queryWrapper = QueryGenerator.initQueryWrapper(fwRoomExamine, req.getParameterMap());
 		Page<FwRoomExamine> page = new Page<FwRoomExamine>(pageNo, pageSize);
 		IPage<FwRoomExamine> pageList = fwRoomExamineService.page(page, queryWrapper);
+		pageList.getRecords().forEach(t -> {
+			CesRooms cesRooms = cesRoomsService.getById(t.getRoomId());
+			if (cesRooms != null) {
+				t.setRoomName(cesRooms.getName());
+				RoomStatusEnum roomStatusEnum = RoomStatusEnum.val(cesRooms.getRoomStatus());
+				if (roomStatusEnum != null) {
+					t.setRoomStatus(roomStatusEnum.getTitle());
+				}
+				BusRoomsLivingOrder busRoomsLivingOrder = busRoomsLivingOrderService.getById(t.getLivingOrderId());
+				if (busRoomsLivingOrder != null) {
+					BusLivingCustomer busLivingCustomer = busLivingCustomerService.getById(busRoomsLivingOrder.getContactId());
+					if (busLivingCustomer != null) {
+						t.setContactName(busLivingCustomer.getCustomerName());
+					}
+				}
+			}
+		});
 		return Result.OK(pageList);
 	}
 
+
 	/**
 	 *   添加
 	 *

+ 14 - 4
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/entity/FwRoomExamine.java

@@ -4,10 +4,8 @@ import java.io.Serializable;
 import java.io.UnsupportedEncodingException;
 import java.util.Date;
 import java.math.BigDecimal;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.TableLogic;
+
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -93,4 +91,16 @@ public class FwRoomExamine implements Serializable {
 	@Excel(name = "查房发起人", width = 15)
     @ApiModelProperty(value = "查房发起人")
     private String promoterBy;
+
+    @ApiModelProperty(value = "房号")
+	@TableField(exist = false)
+    private String roomName;
+
+    @ApiModelProperty(value = "客人姓名")
+    @TableField(exist = false)
+    private String contactName;
+
+    @ApiModelProperty(value = "房间状态")
+    @TableField(exist = false)
+    private String roomStatus;
 }