Merge branch 'dev' of http://122.51.230.86:3000/dianliang/lanan-system into dev
# Conflicts: # dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/DlRepairTicketsService.java # dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java
This commit is contained in:
commit
316e7cae5a
@ -23,6 +23,8 @@ public class BaseConstants {
|
|||||||
public static final String TABLE_BASE_CAR_MAIN = "base_car_main";
|
public static final String TABLE_BASE_CAR_MAIN = "base_car_main";
|
||||||
/**新增标识*/
|
/**新增标识*/
|
||||||
public static final String SIGN_CREATE = "create";
|
public static final String SIGN_CREATE = "create";
|
||||||
|
/**邀请注册/授权给某个租户*/
|
||||||
|
public static final String INVITE_CREATE = "invite_create";
|
||||||
/**编辑标识*/
|
/**编辑标识*/
|
||||||
public static final String SIGN_UPDATE = "update";
|
public static final String SIGN_UPDATE = "update";
|
||||||
/**默认密码*/
|
/**默认密码*/
|
||||||
|
@ -0,0 +1,32 @@
|
|||||||
|
package cn.iocoder.yudao.common;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 邀请者类型枚举
|
||||||
|
*
|
||||||
|
* @author vinjor
|
||||||
|
*/
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public enum InviterTypeEnum {
|
||||||
|
/**
|
||||||
|
* 员工邀请
|
||||||
|
*/
|
||||||
|
STAFF("1","员工邀请"),
|
||||||
|
/**
|
||||||
|
* 客户邀请
|
||||||
|
*/
|
||||||
|
CUSTOMER("2","客户邀请");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* code
|
||||||
|
*/
|
||||||
|
private String code;
|
||||||
|
/**
|
||||||
|
* 名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
package cn.iocoder.yudao.common;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 推广渠道枚举
|
||||||
|
*
|
||||||
|
* @author vinjor
|
||||||
|
*/
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public enum PromotionEnum {
|
||||||
|
/**
|
||||||
|
* 微信小程序
|
||||||
|
*/
|
||||||
|
WeChat("WeChat","微信小程序");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* code
|
||||||
|
*/
|
||||||
|
private String code;
|
||||||
|
/**
|
||||||
|
* 名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
}
|
@ -4,9 +4,9 @@ import lombok.AllArgsConstructor;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bpm 消息的枚举
|
* 系统枚举
|
||||||
*
|
*
|
||||||
* @author 芋道源码
|
* @author vinjor-m
|
||||||
*/
|
*/
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
|
@ -30,6 +30,21 @@ public class UserCarController {
|
|||||||
return CommonResult.success(userCarService.getMyCar());
|
return CommonResult.success(userCarService.getMyCar());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 授权个人信息到某企业
|
||||||
|
* @author PQZ
|
||||||
|
* @date 11:49 2024/10/12
|
||||||
|
**/
|
||||||
|
@GetMapping("/empowerUserInfo")
|
||||||
|
@Operation(summary = "授权个人信息到某企业")
|
||||||
|
public CommonResult<?> empowerUserInfo(@RequestParam("tenantId") Long tenantId) {
|
||||||
|
userCarService.empowerUserInfo(tenantId);
|
||||||
|
return CommonResult.success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建或更新车辆信息
|
* 创建或更新车辆信息
|
||||||
*
|
*
|
||||||
|
@ -22,12 +22,4 @@ public interface BasePromotionService extends IService<BasePromotion> {
|
|||||||
* @param page 分页规则
|
* @param page 分页规则
|
||||||
**/
|
**/
|
||||||
IPage<BasePromotionRespVO> queryListPage(BasePromotionReqVO pageReqVO, Page<BasePromotion> page);
|
IPage<BasePromotionRespVO> queryListPage(BasePromotionReqVO pageReqVO, Page<BasePromotion> page);
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增推广记录
|
|
||||||
* @author 小李
|
|
||||||
* @date 12:26 2024/8/14
|
|
||||||
* @param promotionRespVO 新增对象
|
|
||||||
**/
|
|
||||||
Boolean createPromotion(BasePromotionRespVO promotionRespVO);
|
|
||||||
}
|
}
|
||||||
|
@ -40,4 +40,12 @@ public interface UserCarService extends IService<UserCar> {
|
|||||||
* @return java.lang.Object
|
* @return java.lang.Object
|
||||||
**/
|
**/
|
||||||
Object vehicleLicenseOCR(String imagePath) throws TencentCloudSDKException;
|
Object vehicleLicenseOCR(String imagePath) throws TencentCloudSDKException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将客户信息授权给某个修理厂
|
||||||
|
* @author PQZ
|
||||||
|
* @date 12:40 2024/10/12
|
||||||
|
* @param tenantId 租户id
|
||||||
|
**/
|
||||||
|
void empowerUserInfo(Long tenantId);
|
||||||
}
|
}
|
@ -1,6 +1,5 @@
|
|||||||
package cn.iocoder.yudao.module.custom.service.impl;
|
package cn.iocoder.yudao.module.custom.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import cn.iocoder.yudao.module.custom.entity.BasePromotion;
|
import cn.iocoder.yudao.module.custom.entity.BasePromotion;
|
||||||
import cn.iocoder.yudao.module.custom.mapper.BasePromotionMapper;
|
import cn.iocoder.yudao.module.custom.mapper.BasePromotionMapper;
|
||||||
import cn.iocoder.yudao.module.custom.service.BasePromotionService;
|
import cn.iocoder.yudao.module.custom.service.BasePromotionService;
|
||||||
@ -18,7 +17,6 @@ import org.springframework.stereotype.Service;
|
|||||||
**/
|
**/
|
||||||
@Service
|
@Service
|
||||||
public class BasePromotionServiceImpl extends ServiceImpl<BasePromotionMapper, BasePromotion> implements BasePromotionService {
|
public class BasePromotionServiceImpl extends ServiceImpl<BasePromotionMapper, BasePromotion> implements BasePromotionService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询推广记录
|
* 分页查询推广记录
|
||||||
*
|
*
|
||||||
@ -30,17 +28,4 @@ public class BasePromotionServiceImpl extends ServiceImpl<BasePromotionMapper, B
|
|||||||
public IPage<BasePromotionRespVO> queryListPage(BasePromotionReqVO pageReqVO, Page<BasePromotion> page) {
|
public IPage<BasePromotionRespVO> queryListPage(BasePromotionReqVO pageReqVO, Page<BasePromotion> page) {
|
||||||
return baseMapper.queryListPage(pageReqVO, page);
|
return baseMapper.queryListPage(pageReqVO, page);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增推广记录
|
|
||||||
* @author 小李
|
|
||||||
* @date 12:26 2024/8/14
|
|
||||||
* @param promotionRespVO 新增对象
|
|
||||||
**/
|
|
||||||
@Override
|
|
||||||
public Boolean createPromotion(BasePromotionRespVO promotionRespVO){
|
|
||||||
BasePromotion basePromotion = new BasePromotion();
|
|
||||||
BeanUtil.copyProperties(promotionRespVO, basePromotion);
|
|
||||||
return baseMapper.insert(basePromotion) > 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -34,14 +34,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.common.BaseConstants.*;
|
import static cn.iocoder.yudao.common.BaseConstants.*;
|
||||||
import static cn.iocoder.yudao.common.DictBaseConstants.DICT_CUS_TYPE;
|
import static cn.iocoder.yudao.common.DictBaseConstants.DICT_CUS_TYPE;
|
||||||
@ -113,6 +114,8 @@ public class CustomerMainServiceImpl extends ServiceImpl<CustomerMainMapper, Cus
|
|||||||
if (SIGN_CREATE.equals(sign)){
|
if (SIGN_CREATE.equals(sign)){
|
||||||
//查询数据字典,根据客户类型匹配出预设角色code;
|
//查询数据字典,根据客户类型匹配出预设角色code;
|
||||||
DictDataRespDTO dict = dictDataApi.getDictData(DICT_CUS_TYPE, main.getTypeCode());
|
DictDataRespDTO dict = dictDataApi.getDictData(DICT_CUS_TYPE, main.getTypeCode());
|
||||||
|
//查客户,调用租户为null的查询---未来启用多租户的时候放开 TODO
|
||||||
|
// AdminUserRespDTO userDTO = adminUserApi.getUserByUsernameNoTenantId(saveReqVO.getPhoneNumber());
|
||||||
AdminUserRespDTO userDTO = adminUserApi.getUserByUsername(saveReqVO.getPhoneNumber());
|
AdminUserRespDTO userDTO = adminUserApi.getUserByUsername(saveReqVO.getPhoneNumber());
|
||||||
user = BeanUtils.toBean(userDTO, UserDTO.class);
|
user = BeanUtils.toBean(userDTO, UserDTO.class);
|
||||||
//存在两种情况,一是该用户已经注册,二是该用户未注册
|
//存在两种情况,一是该用户已经注册,二是该用户未注册
|
||||||
@ -150,6 +153,7 @@ public class CustomerMainServiceImpl extends ServiceImpl<CustomerMainMapper, Cus
|
|||||||
}
|
}
|
||||||
DeptRespDTO parentDept = deptApi.getDeptByName(deptName);
|
DeptRespDTO parentDept = deptApi.getDeptByName(deptName);
|
||||||
user.setDeptId(parentDept.getId());
|
user.setDeptId(parentDept.getId());
|
||||||
|
main.setDeptCode(parentDept.getId());
|
||||||
}
|
}
|
||||||
//创建客户
|
//创建客户
|
||||||
userId = adminUserApi.createUser(user);
|
userId = adminUserApi.createUser(user);
|
||||||
@ -163,8 +167,38 @@ public class CustomerMainServiceImpl extends ServiceImpl<CustomerMainMapper, Cus
|
|||||||
Set<String> roleCodes = new HashSet<>();
|
Set<String> roleCodes = new HashSet<>();
|
||||||
roleCodes.add(dict.getRemark());
|
roleCodes.add(dict.getRemark());
|
||||||
permissionApi.assignUserRole(userId, roleCodes);
|
permissionApi.assignUserRole(userId, roleCodes);
|
||||||
|
}else if(INVITE_CREATE.equals(sign)){
|
||||||
|
//邀请注册/授权给某个租户
|
||||||
|
//查询数据字典,根据客户类型匹配出预设角色code;
|
||||||
|
DictDataRespDTO dict = dictDataApi.getDictData(DICT_CUS_TYPE, main.getTypeCode());
|
||||||
|
if (CUS_TYPE_CORP.equals(main.getTypeCode())) {
|
||||||
|
//查询当前登录用户所属租户的政企客户部门id(父级部门)
|
||||||
|
DeptRespDTO parentDept = deptApi.getDeptByName(DEPT_NAME_CORP_NAME);
|
||||||
|
//在部门表下新增一个部门
|
||||||
|
DeptRespDTO deptRespDTO = new DeptRespDTO();
|
||||||
|
deptRespDTO.setName(main.getCusName());
|
||||||
|
deptRespDTO.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
|
//上级部门为本租户顶级部门
|
||||||
|
deptRespDTO.setParentId(parentDept.getId());
|
||||||
|
Long deptId = deptApi.saveDept(deptRespDTO);
|
||||||
|
//客户信息表绑定deptCode
|
||||||
|
main.setDeptCode(deptId);
|
||||||
|
}else{
|
||||||
|
//私人客户和代办客户归属到默认的部门中
|
||||||
|
String deptName = "";
|
||||||
|
if(CUS_TYPE_PRIVATE.equals(main.getTypeCode())){
|
||||||
|
deptName =DEPT_NAME_PRIVATE_NAME;
|
||||||
|
}else if(CUS_TYPE_AGENT.equals(main.getTypeCode())){
|
||||||
|
deptName = DEPT_NAME_AGENT_NAME;
|
||||||
|
}
|
||||||
|
DeptRespDTO parentDept = deptApi.getDeptByName(deptName);
|
||||||
|
main.setDeptCode(parentDept.getId());
|
||||||
|
}
|
||||||
|
//绑定角色
|
||||||
|
Set<String> roleCodes = new HashSet<>();
|
||||||
|
roleCodes.add(dict.getRemark());
|
||||||
|
permissionApi.assignUserRole(main.getUserId(), roleCodes);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*3、保存客户主表信息*/
|
/*3、保存客户主表信息*/
|
||||||
//暂时写死会员id TODO
|
//暂时写死会员id TODO
|
||||||
main.setMemberLevelId("9d4567b7e68803933f4917a4aab6b745");
|
main.setMemberLevelId("9d4567b7e68803933f4917a4aab6b745");
|
||||||
|
@ -1,25 +1,44 @@
|
|||||||
package cn.iocoder.yudao.module.custom.service.impl;
|
package cn.iocoder.yudao.module.custom.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.lang.UUID;
|
||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import cn.iocoder.yudao.common.DictBaseConstants;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
import cn.iocoder.yudao.framework.security.core.LoginUser;
|
import cn.iocoder.yudao.framework.security.core.LoginUser;
|
||||||
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
||||||
|
import cn.iocoder.yudao.module.custom.entity.CarMain;
|
||||||
|
import cn.iocoder.yudao.module.custom.entity.CustomerCar;
|
||||||
|
import cn.iocoder.yudao.module.custom.entity.CustomerMain;
|
||||||
import cn.iocoder.yudao.module.custom.entity.UserCar;
|
import cn.iocoder.yudao.module.custom.entity.UserCar;
|
||||||
import cn.iocoder.yudao.module.custom.mapper.UserCarMapper;
|
import cn.iocoder.yudao.module.custom.mapper.UserCarMapper;
|
||||||
|
import cn.iocoder.yudao.module.custom.service.CarMainService;
|
||||||
|
import cn.iocoder.yudao.module.custom.service.CustomerCarService;
|
||||||
|
import cn.iocoder.yudao.module.custom.service.CustomerMainService;
|
||||||
import cn.iocoder.yudao.module.custom.service.UserCarService;
|
import cn.iocoder.yudao.module.custom.service.UserCarService;
|
||||||
import cn.iocoder.yudao.module.custom.vo.DrivelicenseVO;
|
import cn.iocoder.yudao.module.custom.vo.*;
|
||||||
import cn.iocoder.yudao.module.custom.vo.UserCarVO;
|
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
||||||
|
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
||||||
|
import cn.iocoder.yudao.module.system.api.user.dto.UserDTO;
|
||||||
import cn.iocoder.yudao.util.VehicleLicenseOCR;
|
import cn.iocoder.yudao.util.VehicleLicenseOCR;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
|
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.common.BaseConstants.SIGN_CREATE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户车辆信息表--用户个人录入的 Service 实现类
|
* 用户车辆信息表--用户个人录入的 Service 实现类
|
||||||
*
|
*
|
||||||
@ -31,6 +50,15 @@ public class UserCarServiceImpl extends ServiceImpl<UserCarMapper, UserCar> impl
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private UserCarMapper userCarMapper;
|
private UserCarMapper userCarMapper;
|
||||||
|
@Resource
|
||||||
|
private CustomerMainService customerMainService;
|
||||||
|
@Resource
|
||||||
|
private AdminUserApi userApi;
|
||||||
|
@Resource
|
||||||
|
private CarMainService carMainService;
|
||||||
|
@Resource
|
||||||
|
private CustomerCarService customerCarService;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建或更新车辆信息
|
* 创建或更新车辆信息
|
||||||
@ -80,4 +108,102 @@ public class UserCarServiceImpl extends ServiceImpl<UserCarMapper, UserCar> impl
|
|||||||
}
|
}
|
||||||
return licenseVO;
|
return licenseVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将客户信息授权给某个修理厂
|
||||||
|
*
|
||||||
|
* @param tenantId 租户id
|
||||||
|
* @author PQZ
|
||||||
|
* @date 12:40 2024/10/12
|
||||||
|
**/
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void empowerUserInfo(Long tenantId) {
|
||||||
|
/*1、基础数据准备*/
|
||||||
|
//获取当前登录用户信息
|
||||||
|
Long userId = SecurityFrameworkUtils.getLoginUserId();
|
||||||
|
AdminUserRespDTO loginUser = userApi.getUser(userId);
|
||||||
|
//获取当前登录用户车辆信息
|
||||||
|
List<UserCarVO> carList = getMyCar();
|
||||||
|
//需要保存的关联关系
|
||||||
|
List<CustomerCar> saveCustomerCarList = new ArrayList<>();
|
||||||
|
//需要保存的车辆信息
|
||||||
|
List<CarMain> saveCarList = new ArrayList<>();
|
||||||
|
//提前为客户id赋值
|
||||||
|
String customerId = UUID.randomUUID().toString().replace("-", "");
|
||||||
|
|
||||||
|
/*2、数据转换,将用户表关联信息转换成客户表关联信息 */
|
||||||
|
//转换客户数据
|
||||||
|
CustomerMain customerMain = new CustomerMain();
|
||||||
|
customerMain.setId(customerId);
|
||||||
|
customerMain.setUserId(userId);
|
||||||
|
customerMain.setCusName(loginUser.getNickname());
|
||||||
|
customerMain.setSex(String.valueOf(loginUser.getSex()));
|
||||||
|
customerMain.setPhoneNumber(loginUser.getMobile());
|
||||||
|
customerMain.setTenantId(tenantId);
|
||||||
|
customerMain.setTypeCode("01");
|
||||||
|
customerMain.setDataFrom("04");
|
||||||
|
customerMain.setIsHangAccount("0");
|
||||||
|
//转换车辆及关联关系数据
|
||||||
|
if (CollUtil.isNotEmpty(carList)){
|
||||||
|
carList.forEach(item ->{
|
||||||
|
CarMain carItem = new CarMain();
|
||||||
|
CustomerCar customerCarItem = new CustomerCar();
|
||||||
|
String carId = UUID.randomUUID().toString().replace("-", "");
|
||||||
|
//车辆信息
|
||||||
|
carItem.setId(carId);
|
||||||
|
carItem.setEngineNumber(item.getEngineNumber());
|
||||||
|
carItem.setVin(item.getVin());
|
||||||
|
carItem.setLicenseNumber(item.getLicenseNumber());
|
||||||
|
carItem.setCarModel(item.getCarModel());
|
||||||
|
carItem.setMaintenanceDate(convertToLocalDateTime(item.getMaintenanceDate()));
|
||||||
|
carItem.setMaintenanceMileage(convertToBigDecimal(item.getMaintenanceMileage()));
|
||||||
|
carItem.setInspectionDate(convertToLocalDateTime(item.getInspectionDate()));
|
||||||
|
carItem.setInsuranceDate(convertToLocalDateTime(item.getInsuranceDate()));
|
||||||
|
carItem.setCheckDate(convertToLocalDateTime(item.getCheckDate()));
|
||||||
|
carItem.setNextMaintenanceDate(convertToLocalDateTime(item.getNextMaintenanceDate()));
|
||||||
|
carItem.setNextMaintenanceMileage(convertToBigDecimal(item.getNextMaintenanceMileage()));
|
||||||
|
carItem.setNextInspectionDate(convertToLocalDateTime(item.getNextInspectionDate()));
|
||||||
|
carItem.setInsuranceExpiryDate(convertToLocalDateTime(item.getInsuranceExpiryDate()));
|
||||||
|
carItem.setNextCheckDate(convertToLocalDateTime(item.getNextCheckDate()));
|
||||||
|
carItem.setCarBrand(item.getCarBrand());
|
||||||
|
carItem.setCarNature(item.getCarNature());
|
||||||
|
carItem.setCarCategory(item.getCarCategory());
|
||||||
|
carItem.setCarRegisterDate(convertToLocalDateTime(item.getCarRegisterDate()));
|
||||||
|
carItem.setCarLicenseImg(item.getCarLicenseImg());
|
||||||
|
//客户与车辆关联关系
|
||||||
|
customerCarItem.setCusId(customerId);
|
||||||
|
customerCarItem.setCarId(carId);
|
||||||
|
customerCarItem.setIsOwner(item.getIsOwner());
|
||||||
|
saveCarList.add(carItem);
|
||||||
|
saveCustomerCarList.add(customerCarItem);
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/*3、数据保存*/
|
||||||
|
//保存客户信息
|
||||||
|
customerMainService.save(customerMain);
|
||||||
|
//保存车辆信息
|
||||||
|
carMainService.saveBatch(saveCarList);
|
||||||
|
//保存客户与车辆关联关系
|
||||||
|
customerCarService.saveBatch(saveCustomerCarList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Date转换为LocalDateTime */
|
||||||
|
private LocalDateTime convertToLocalDateTime(Date carRegisterDate) {
|
||||||
|
if (carRegisterDate != null) {
|
||||||
|
return LocalDateTime.ofInstant(carRegisterDate.toInstant(), ZoneId.systemDefault());
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Long转换为BigDecimal */
|
||||||
|
private BigDecimal convertToBigDecimal(Long value) {
|
||||||
|
if (value != null) {
|
||||||
|
return BigDecimal.valueOf(value);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,15 +1,17 @@
|
|||||||
package cn.iocoder.yudao.module.staff.service;
|
package cn.iocoder.yudao.module.staff.service;
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.staff.entity.CompanyStaff;
|
|
||||||
import cn.iocoder.yudao.module.label.entity.Label;
|
import cn.iocoder.yudao.module.label.entity.Label;
|
||||||
|
import cn.iocoder.yudao.module.staff.entity.CompanyStaff;
|
||||||
import cn.iocoder.yudao.module.staff.vo.CompanyStaffReqVO;
|
import cn.iocoder.yudao.module.staff.vo.CompanyStaffReqVO;
|
||||||
import cn.iocoder.yudao.module.staff.vo.CompanyStaffRespVO;
|
import cn.iocoder.yudao.module.staff.vo.CompanyStaffRespVO;
|
||||||
import cn.iocoder.yudao.module.system.api.permission.dto.RoleReqDTO;
|
import cn.iocoder.yudao.module.system.api.permission.dto.RoleReqDTO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -110,4 +112,15 @@ public interface CompanyStaffService extends IService<CompanyStaff> {
|
|||||||
* @date 14:53 2024/8/14
|
* @date 14:53 2024/8/14
|
||||||
**/
|
**/
|
||||||
List<RoleReqDTO> getRoleList();
|
List<RoleReqDTO> getRoleList();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增推广记录
|
||||||
|
* @author vinjor-m
|
||||||
|
* @date 12:26 2024/8/14
|
||||||
|
* @param uniqueCode 推广码
|
||||||
|
* @param user 被推广用户
|
||||||
|
* @param promotionChannel 推广渠道
|
||||||
|
* @param registerTime 被推广用户注册的时间
|
||||||
|
**/
|
||||||
|
Boolean createPromotion(String uniqueCode, AdminUserDO user, String promotionChannel, Date registerTime);
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,14 @@ import cn.hutool.core.bean.BeanUtil;
|
|||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.iocoder.yudao.common.BaseConstants;
|
import cn.iocoder.yudao.common.BaseConstants;
|
||||||
import cn.iocoder.yudao.common.CommonErrorCodeConstants;
|
import cn.iocoder.yudao.common.CommonErrorCodeConstants;
|
||||||
|
import cn.iocoder.yudao.common.InviterTypeEnum;
|
||||||
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
||||||
|
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
|
||||||
|
import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
|
||||||
|
import cn.iocoder.yudao.module.custom.entity.BasePromotion;
|
||||||
|
import cn.iocoder.yudao.module.custom.service.BasePromotionService;
|
||||||
|
import cn.iocoder.yudao.module.custom.service.CustomerMainService;
|
||||||
|
import cn.iocoder.yudao.module.custom.vo.CustomerMainSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.label.entity.BusiLabel;
|
import cn.iocoder.yudao.module.label.entity.BusiLabel;
|
||||||
import cn.iocoder.yudao.module.label.entity.Label;
|
import cn.iocoder.yudao.module.label.entity.Label;
|
||||||
import cn.iocoder.yudao.module.label.service.BusiLabelService;
|
import cn.iocoder.yudao.module.label.service.BusiLabelService;
|
||||||
@ -24,13 +31,14 @@ import cn.iocoder.yudao.module.system.api.permission.dto.RoleReqDTO;
|
|||||||
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
||||||
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
||||||
import cn.iocoder.yudao.module.system.api.user.dto.UserDTO;
|
import cn.iocoder.yudao.module.system.api.user.dto.UserDTO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
||||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@ -38,10 +46,12 @@ import java.math.BigDecimal;
|
|||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.Period;
|
import java.time.Period;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.common.BaseConstants.INVITE_CREATE;
|
||||||
import static cn.iocoder.yudao.framework.common.config.CommonStr.USER_TYPE_STAFF;
|
import static cn.iocoder.yudao.framework.common.config.CommonStr.USER_TYPE_STAFF;
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
|
||||||
@ -80,6 +90,10 @@ public class CompanyStaffServiceImpl extends ServiceImpl<CompanyStaffMapper, Com
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private PermissionApi permissionApi;
|
private PermissionApi permissionApi;
|
||||||
|
@Autowired
|
||||||
|
private BasePromotionService basePromotionService;
|
||||||
|
@Resource
|
||||||
|
private CustomerMainService customerMainService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得企业管理-员工信息表分页
|
* 获得企业管理-员工信息表分页
|
||||||
@ -512,4 +526,60 @@ public class CompanyStaffServiceImpl extends ServiceImpl<CompanyStaffMapper, Com
|
|||||||
public List<RoleReqDTO> getRoleList() {
|
public List<RoleReqDTO> getRoleList() {
|
||||||
return roleApi.getRoleList();
|
return roleApi.getRoleList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增推广记录---忽略租户
|
||||||
|
*
|
||||||
|
* @param uniqueCode 推广码
|
||||||
|
* @param user 被推广用户
|
||||||
|
* @param promotionChannel 推广渠道
|
||||||
|
* @param registerTime 被推广用户注册的时间
|
||||||
|
* @author vinjor-m
|
||||||
|
* @date 12:26 2024/8/14
|
||||||
|
**/
|
||||||
|
@Override
|
||||||
|
@TenantIgnore
|
||||||
|
public Boolean createPromotion(String uniqueCode, AdminUserDO user, String promotionChannel, Date registerTime) {
|
||||||
|
/*1.先查是否是员工推广 */
|
||||||
|
LambdaQueryWrapper<CompanyStaff> queryWrapper = new LambdaQueryWrapper<CompanyStaff>()
|
||||||
|
.eq(CompanyStaff::getUniqueCode,uniqueCode);
|
||||||
|
List<CompanyStaff> staffList = this.list(queryWrapper);
|
||||||
|
if(!staffList.isEmpty()){
|
||||||
|
//员工推广
|
||||||
|
CompanyStaff staff = staffList.get(0);
|
||||||
|
// 插入推广记录
|
||||||
|
BasePromotion basePromotion = new BasePromotion();
|
||||||
|
basePromotion.setOldUserId(staff.getUserId());
|
||||||
|
basePromotion.setOldUserName(staff.getName());
|
||||||
|
basePromotion.setPromotionChannel(promotionChannel);
|
||||||
|
basePromotion.setNewUserId(user.getId());
|
||||||
|
basePromotion.setNewUserName(user.getNickname());
|
||||||
|
basePromotion.setRegisterTime(registerTime);
|
||||||
|
basePromotion.setUniqueCode(uniqueCode);
|
||||||
|
basePromotionService.save(basePromotion);
|
||||||
|
//取到该员工的租户,以该租户的角度去保存客户数据
|
||||||
|
TenantUtils.execute(staff.getTenantId(), () -> {
|
||||||
|
CustomerMainSaveReqVO saveReqVO = new CustomerMainSaveReqVO();
|
||||||
|
saveReqVO.setUserId(user.getId());
|
||||||
|
saveReqVO.setPhoneNumber(user.getMobile());
|
||||||
|
saveReqVO.setSex(user.getSex().toString());
|
||||||
|
saveReqVO.setCusName(user.getNickname());
|
||||||
|
//客户类型,统一为私人客户
|
||||||
|
saveReqVO.setTypeCode("01");
|
||||||
|
//客户来源,统一为04-维修
|
||||||
|
saveReqVO.setDataFrom("04");
|
||||||
|
//注册方式,统一为自主创建
|
||||||
|
saveReqVO.setInviterType("01");
|
||||||
|
//邀请者id
|
||||||
|
saveReqVO.setInviter(staff.getUserId().toString());
|
||||||
|
//邀请者类型
|
||||||
|
saveReqVO.setInviterType(InviterTypeEnum.STAFF.getCode());
|
||||||
|
//邀请注册添加客户
|
||||||
|
customerMainService.saveCustomer(saveReqVO,INVITE_CREATE);
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
/*2.不是员工推广,再查是否是客户推广*/
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package cn.iocoder.yudao.module.app.wechat.controller;
|
package cn.iocoder.yudao.module.wechat.controller;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
import cn.iocoder.yudao.module.app.wechat.service.WechatService;
|
import cn.iocoder.yudao.module.wechat.service.WechatService;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.AuthLoginReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.AuthLoginReqVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.AuthLoginRespVO;
|
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.AuthLoginRespVO;
|
||||||
import cn.iocoder.yudao.module.system.service.auth.AdminAuthService;
|
import cn.iocoder.yudao.module.system.service.auth.AdminAuthService;
|
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.module.app.wechat.service;
|
package cn.iocoder.yudao.module.wechat.service;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
@ -1,10 +1,12 @@
|
|||||||
package cn.iocoder.yudao.module.app.wechat.service.impl;
|
package cn.iocoder.yudao.module.wechat.service.impl;
|
||||||
|
|
||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import cn.iocoder.yudao.common.PromotionEnum;
|
||||||
import cn.iocoder.yudao.common.SystemEnum;
|
import cn.iocoder.yudao.common.SystemEnum;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
import cn.iocoder.yudao.module.app.wechat.service.WechatService;
|
import cn.iocoder.yudao.module.staff.service.CompanyStaffService;
|
||||||
|
import cn.iocoder.yudao.module.wechat.service.WechatService;
|
||||||
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
||||||
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
|
||||||
@ -18,6 +20,7 @@ import org.springframework.security.crypto.password.PasswordEncoder;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -40,6 +43,8 @@ public class WechatServiceImpl implements WechatService {
|
|||||||
private AdminUserService userService;
|
private AdminUserService userService;
|
||||||
@Resource
|
@Resource
|
||||||
private PasswordEncoder passwordEncoder;
|
private PasswordEncoder passwordEncoder;
|
||||||
|
@Autowired
|
||||||
|
private CompanyStaffService companyStaffService;
|
||||||
/**
|
/**
|
||||||
* 微信自动登录
|
* 微信自动登录
|
||||||
*
|
*
|
||||||
@ -159,8 +164,10 @@ public class WechatServiceImpl implements WechatService {
|
|||||||
wxUser.setUsername(user.getUsername());
|
wxUser.setUsername(user.getUsername());
|
||||||
wxUser.setNickname(user.getNickname());
|
wxUser.setNickname(user.getNickname());
|
||||||
}
|
}
|
||||||
|
/*如果携带了邀请码,需要插入邀请记录并自动复制用户信息到邀请者的租户下 */
|
||||||
if(!StringUtils.isEmpty(inviteId)){
|
if(!StringUtils.isEmpty(inviteId)){
|
||||||
//那邀请者的码查邀请者的信息
|
//邀请注册,自动注册客户信息
|
||||||
|
companyStaffService.createPromotion(inviteId,wxUser, PromotionEnum.WeChat.getCode(), new Date());
|
||||||
}
|
}
|
||||||
return wxUser;
|
return wxUser;
|
||||||
}
|
}
|
@ -15,6 +15,9 @@ public class Result<T> implements Serializable {
|
|||||||
public Result() {
|
public Result() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Result(Object o, String 文件不能为空) {
|
||||||
|
}
|
||||||
|
|
||||||
public Integer getCode() {
|
public Integer getCode() {
|
||||||
return this.code;
|
return this.code;
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,11 @@
|
|||||||
<artifactId>yudao-module-system-biz</artifactId>
|
<artifactId>yudao-module-system-biz</artifactId>
|
||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.deepoove</groupId>
|
||||||
|
<artifactId>poi-tl</artifactId>
|
||||||
|
<version>1.10.0</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<properties>
|
<properties>
|
||||||
<maven.compiler.source>8</maven.compiler.source>
|
<maven.compiler.source>8</maven.compiler.source>
|
||||||
|
@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.security.config.SecurityProperties;
|
|||||||
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
||||||
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
|
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
|
||||||
import cn.iocoder.yudao.module.app.vo.WxLoginBody;
|
import cn.iocoder.yudao.module.app.vo.WxLoginBody;
|
||||||
import cn.iocoder.yudao.module.app.wechat.service.WechatService;
|
import cn.iocoder.yudao.module.wechat.service.WechatService;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.AuthLoginRespVO;
|
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.AuthLoginRespVO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
||||||
import cn.iocoder.yudao.module.system.service.auth.AdminAuthService;
|
import cn.iocoder.yudao.module.system.service.auth.AdminAuthService;
|
||||||
|
@ -12,14 +12,16 @@ import io.swagger.v3.oas.annotations.Operation;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 维修工单表(DlRepairTickets)表控制层
|
* 维修工单表(DlRepairTickets)表控制层
|
||||||
|
*
|
||||||
* @author 小李
|
* @author 小李
|
||||||
* @date 18:21 2024/9/13
|
* @date 18:21 2024/9/13
|
||||||
**/
|
**/
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/repair/tickets")
|
@RequestMapping("/repair/tickets")
|
||||||
public class DlRepairTicketsController {
|
public class DlRepairTicketsController {
|
||||||
@ -29,16 +31,18 @@ public class DlRepairTicketsController {
|
|||||||
@Resource
|
@Resource
|
||||||
private DlRepairTicketsService dlRepairTicketsService;
|
private DlRepairTicketsService dlRepairTicketsService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 维修工单表 新增
|
* 维修工单表 新增
|
||||||
*
|
*
|
||||||
|
* @param ticketsRespVO 新增对象
|
||||||
* @author 小李
|
* @author 小李
|
||||||
* @date 11:33 2024/9/20
|
* @date 11:33 2024/9/20
|
||||||
* @param ticketsRespVO 新增对象
|
|
||||||
**/
|
**/
|
||||||
@PostMapping("/create")
|
@PostMapping("/create")
|
||||||
@Operation(summary = "维修工单表 新增")
|
@Operation(summary = "维修工单表 新增")
|
||||||
public CommonResult<?> createTicket(@RequestBody DlRepairTicketsRespVO ticketsRespVO){
|
public CommonResult<?> createTicket(@RequestBody DlRepairTicketsRespVO ticketsRespVO) {
|
||||||
dlRepairTicketsService.createTickets(ticketsRespVO);
|
dlRepairTicketsService.createTickets(ticketsRespVO);
|
||||||
return CommonResult.ok();
|
return CommonResult.ok();
|
||||||
}
|
}
|
||||||
@ -46,17 +50,17 @@ public class DlRepairTicketsController {
|
|||||||
/**
|
/**
|
||||||
* 维修工单表 分页
|
* 维修工单表 分页
|
||||||
*
|
*
|
||||||
* @author 小李
|
|
||||||
* @date 20:51 2024/9/20
|
|
||||||
* @param repairTicketsReqVO 查询对象
|
* @param repairTicketsReqVO 查询对象
|
||||||
* @param pageNo 页码
|
* @param pageNo 页码
|
||||||
* @param pageSize 条数
|
* @param pageSize 条数
|
||||||
|
* @author 小李
|
||||||
|
* @date 20:51 2024/9/20
|
||||||
**/
|
**/
|
||||||
@GetMapping("/page")
|
@GetMapping("/page")
|
||||||
@Operation(summary = "维修工单表 分页")
|
@Operation(summary = "维修工单表 分页")
|
||||||
public CommonResult<?> getTicketsPage(DlRepairTicketsReqVO repairTicketsReqVO,
|
public CommonResult<?> getTicketsPage(DlRepairTicketsReqVO repairTicketsReqVO,
|
||||||
@RequestParam(value = "pageNo", defaultValue = "1")Integer pageNo,
|
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||||
@RequestParam(value = "pageSize", defaultValue = "10")Integer pageSize){
|
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||||
Page<DlRepairTickets> page = new Page<>(pageNo, pageSize);
|
Page<DlRepairTickets> page = new Page<>(pageNo, pageSize);
|
||||||
return success(dlRepairTicketsService.getTicketsPage(repairTicketsReqVO, page));
|
return success(dlRepairTicketsService.getTicketsPage(repairTicketsReqVO, page));
|
||||||
}
|
}
|
||||||
@ -64,26 +68,26 @@ public class DlRepairTicketsController {
|
|||||||
/**
|
/**
|
||||||
* 获得一个工单的详细信息
|
* 获得一个工单的详细信息
|
||||||
*
|
*
|
||||||
|
* @param id 工单ID
|
||||||
* @author 小李
|
* @author 小李
|
||||||
* @date 16:05 2024/9/21
|
* @date 16:05 2024/9/21
|
||||||
* @param id 工单ID
|
|
||||||
**/
|
**/
|
||||||
@GetMapping("/get")
|
@GetMapping("/get")
|
||||||
@Operation(summary = "查看一个工单的详细信息")
|
@Operation(summary = "查看一个工单的详细信息")
|
||||||
public CommonResult<?> getTicketsById(@RequestParam("id") String id){
|
public CommonResult<?> getTicketsById(@RequestParam("id") String id) {
|
||||||
return success(dlRepairTicketsService.getTicketsById(id));
|
return success(dlRepairTicketsService.getTicketsById(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 维修工单表 作废
|
* 维修工单表 作废
|
||||||
*
|
*
|
||||||
|
* @param repairTicketsReqVO 工单对象
|
||||||
* @author 小李
|
* @author 小李
|
||||||
* @date 19:46 2024/9/22
|
* @date 19:46 2024/9/22
|
||||||
* @param repairTicketsReqVO 工单对象
|
|
||||||
**/
|
**/
|
||||||
@PostMapping("/void")
|
@PostMapping("/void")
|
||||||
@Operation(summary = "维修工单表 作废")
|
@Operation(summary = "维修工单表 作废")
|
||||||
public CommonResult<?> setTicketsVoid(@RequestBody DlRepairTicketsReqVO repairTicketsReqVO){
|
public CommonResult<?> setTicketsVoid(@RequestBody DlRepairTicketsReqVO repairTicketsReqVO) {
|
||||||
dlRepairTicketsService.setTicketsVoid(repairTicketsReqVO);
|
dlRepairTicketsService.setTicketsVoid(repairTicketsReqVO);
|
||||||
return CommonResult.ok();
|
return CommonResult.ok();
|
||||||
}
|
}
|
||||||
@ -91,27 +95,63 @@ public class DlRepairTicketsController {
|
|||||||
/**
|
/**
|
||||||
* 维修工单表 结算
|
* 维修工单表 结算
|
||||||
*
|
*
|
||||||
|
* @param repairTicketsRespVO 工单
|
||||||
* @author 小李
|
* @author 小李
|
||||||
* @date 8:50 2024/9/23
|
* @date 8:50 2024/9/23
|
||||||
* @param repairTicketsRespVO 工单
|
|
||||||
**/
|
**/
|
||||||
@PostMapping("/paid")
|
@PostMapping("/paid")
|
||||||
@Operation(summary = "维修工单表 结算")
|
@Operation(summary = "维修工单表 结算")
|
||||||
public CommonResult<?> setTicketsPaid(@RequestBody DlRepairTicketsRespVO repairTicketsRespVO){
|
public CommonResult<?> setTicketsPaid(@RequestBody DlRepairTicketsRespVO repairTicketsRespVO) {
|
||||||
dlRepairTicketsService.setTicketsPaid(repairTicketsRespVO);
|
dlRepairTicketsService.setTicketsPaid(repairTicketsRespVO);
|
||||||
return CommonResult.ok();
|
return CommonResult.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * 维修工单表 导出
|
||||||
|
// *
|
||||||
|
// * @param file 导出文件
|
||||||
|
// * @author lzt
|
||||||
|
// * @date 2024年10月11日
|
||||||
|
// */
|
||||||
|
// @PostMapping("/print")
|
||||||
|
// @Operation(summary = "维修工单表 导出")
|
||||||
|
// public ResponseEntity<Result<FileInfo>> printDocument(@RequestParam("file") MultipartFile file) {
|
||||||
|
// if (file.isEmpty()) {
|
||||||
|
// return ResponseEntity.badRequest().body(new Result<>(null, "文件不能为空"));
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// try {
|
||||||
|
// FileDO fileInfo = fileService.createFileDetail(file.getOriginalFilename(), "/ticket", IoUtil.readBytes(file.getInputStream()));
|
||||||
|
// return ResponseEntity.ok(new Result<>(fileInfo, "文件上传成功"));
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// return ResponseEntity.status(500).body(new Result<>(null, "文件上传失败: " + e.getMessage()));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 维修工单打印
|
||||||
|
*
|
||||||
|
* @param response HttpServletResponse
|
||||||
|
* @param id 维修工单id
|
||||||
|
* @author PQZ
|
||||||
|
* @date 13:48 2024/10/12
|
||||||
|
**/
|
||||||
|
@GetMapping("/print/{id}")
|
||||||
|
@Operation(summary = "维修工单打印")
|
||||||
|
public void printDocument(HttpServletResponse response, @PathVariable String id) {
|
||||||
|
dlRepairTicketsService.print(response,id);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 客户信息和车辆信息 新增、修改
|
* 客户信息和车辆信息 新增、修改
|
||||||
*
|
*
|
||||||
|
* @param customerAndCarVO 用户信息和车辆信息
|
||||||
* @author 小李
|
* @author 小李
|
||||||
* @date 9:25 2024/10/8
|
* @date 9:25 2024/10/8
|
||||||
* @param customerAndCarVO 用户信息和车辆信息
|
|
||||||
**/
|
**/
|
||||||
@PostMapping("/updateUserAndCar")
|
@PostMapping("/updateUserAndCar")
|
||||||
@Operation(summary = "客户信息和车辆信息 新增、修改")
|
@Operation(summary = "客户信息和车辆信息 新增、修改")
|
||||||
public CommonResult<?> updateCustomerAndCar(@RequestBody CustomerAndCarVO customerAndCarVO){
|
public CommonResult<?> updateCustomerAndCar(@RequestBody CustomerAndCarVO customerAndCarVO) {
|
||||||
dlRepairTicketsService.updateCustomerAndCar(customerAndCarVO);
|
dlRepairTicketsService.updateCustomerAndCar(customerAndCarVO);
|
||||||
return CommonResult.ok();
|
return CommonResult.ok();
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 针对表【dl_repair_tickets(维修工单表)】的数据库操作Service
|
* 针对表【dl_repair_tickets(维修工单表)】的数据库操作Service
|
||||||
*
|
*
|
||||||
@ -19,57 +21,67 @@ public interface DlRepairTicketsService extends IService<DlRepairTickets> {
|
|||||||
/**
|
/**
|
||||||
* 维修工单表 新增
|
* 维修工单表 新增
|
||||||
*
|
*
|
||||||
|
* @param ticketsRespVO 新增对象
|
||||||
* @author 小李
|
* @author 小李
|
||||||
* @date 11:33 2024/9/20
|
* @date 11:33 2024/9/20
|
||||||
* @param ticketsRespVO 新增对象
|
|
||||||
**/
|
**/
|
||||||
void createTickets(DlRepairTicketsRespVO ticketsRespVO);
|
void createTickets(DlRepairTicketsRespVO ticketsRespVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 维修工单表 分页
|
* 维修工单表 分页
|
||||||
*
|
*
|
||||||
|
* @param repairTicketsReqVO 查询对象
|
||||||
* @author 小李
|
* @author 小李
|
||||||
* @date 20:51 2024/9/20
|
* @date 20:51 2024/9/20
|
||||||
* @param repairTicketsReqVO 查询对象
|
|
||||||
**/
|
**/
|
||||||
IPage<DlRepairTickets> getTicketsPage(DlRepairTicketsReqVO repairTicketsReqVO, Page<DlRepairTickets> page);
|
IPage<DlRepairTickets> getTicketsPage(DlRepairTicketsReqVO repairTicketsReqVO, Page<DlRepairTickets> page);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得一个工单的详细信息
|
* 获得一个工单的详细信息
|
||||||
*
|
*
|
||||||
|
* @param id 工单ID
|
||||||
* @author 小李
|
* @author 小李
|
||||||
* @date 16:05 2024/9/21
|
* @date 16:05 2024/9/21
|
||||||
* @param id 工单ID
|
|
||||||
**/
|
**/
|
||||||
DlRepairTicketsRespVO getTicketsById(String id);
|
DlRepairTicketsRespVO getTicketsById(String id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 维修工单表 作废
|
* 维修工单表 作废
|
||||||
*
|
*
|
||||||
|
* @param repairTicketsReqVO 工单对象
|
||||||
* @author 小李
|
* @author 小李
|
||||||
* @date 19:46 2024/9/22
|
* @date 19:46 2024/9/22
|
||||||
* @param repairTicketsReqVO 工单对象
|
|
||||||
**/
|
**/
|
||||||
void setTicketsVoid(DlRepairTicketsReqVO repairTicketsReqVO);
|
void setTicketsVoid(DlRepairTicketsReqVO repairTicketsReqVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 维修工单表 结算
|
* 维修工单表 结算
|
||||||
*
|
*
|
||||||
|
* @param repairTicketsRespVO 工单
|
||||||
* @author 小李
|
* @author 小李
|
||||||
* @date 8:50 2024/9/23
|
* @date 8:50 2024/9/23
|
||||||
* @param repairTicketsRespVO 工单
|
|
||||||
**/
|
**/
|
||||||
void setTicketsPaid(DlRepairTicketsRespVO repairTicketsRespVO);
|
void setTicketsPaid(DlRepairTicketsRespVO repairTicketsRespVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 客户信息和车辆信息 新增、修改
|
* 客户信息和车辆信息 新增、修改
|
||||||
*
|
*
|
||||||
|
* @param customerAndCarVO 用户信息和车辆信息
|
||||||
* @author 小李
|
* @author 小李
|
||||||
* @date 9:25 2024/10/8
|
* @date 9:25 2024/10/8
|
||||||
* @param customerAndCarVO 用户信息和车辆信息
|
|
||||||
**/
|
**/
|
||||||
void updateCustomerAndCar(CustomerAndCarVO customerAndCarVO);
|
void updateCustomerAndCar(CustomerAndCarVO customerAndCarVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打印工单
|
||||||
|
*
|
||||||
|
* @param response HttpServletResponse
|
||||||
|
* @param id String
|
||||||
|
* @author PQZ
|
||||||
|
* @date 14:00 2024/10/12
|
||||||
|
**/
|
||||||
|
void print(HttpServletResponse response, String id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分类查询工单分页
|
* 分类查询工单分页
|
||||||
*
|
*
|
||||||
|
@ -38,6 +38,7 @@ import cn.iocoder.yudao.module.tickets.entity.DlRepairTitem;
|
|||||||
import cn.iocoder.yudao.module.tickets.mapper.DlRepairTicketsMapper;
|
import cn.iocoder.yudao.module.tickets.mapper.DlRepairTicketsMapper;
|
||||||
import cn.iocoder.yudao.module.tickets.service.DlRepairTicketsService;
|
import cn.iocoder.yudao.module.tickets.service.DlRepairTicketsService;
|
||||||
import cn.iocoder.yudao.module.tickets.service.DlRepairTitemService;
|
import cn.iocoder.yudao.module.tickets.service.DlRepairTitemService;
|
||||||
|
import cn.iocoder.yudao.module.tickets.tools.WordUtil;
|
||||||
import cn.iocoder.yudao.module.tickets.vo.CustomerAndCarVO;
|
import cn.iocoder.yudao.module.tickets.vo.CustomerAndCarVO;
|
||||||
import cn.iocoder.yudao.module.tickets.vo.DlRepairTicketsReqVO;
|
import cn.iocoder.yudao.module.tickets.vo.DlRepairTicketsReqVO;
|
||||||
import cn.iocoder.yudao.module.tickets.vo.DlRepairTicketsRespVO;
|
import cn.iocoder.yudao.module.tickets.vo.DlRepairTicketsRespVO;
|
||||||
@ -47,16 +48,22 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.deepoove.poi.XWPFTemplate;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.print.Doc;
|
import javax.print.Doc;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -347,6 +354,34 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打印工单
|
||||||
|
*
|
||||||
|
* @param response HttpServletResponse
|
||||||
|
* @param id String
|
||||||
|
* @author PQZ
|
||||||
|
* @date 14:00 2024/10/12
|
||||||
|
**/
|
||||||
|
@Override
|
||||||
|
public void print(HttpServletResponse response, String id) {
|
||||||
|
Map<String,Object> params = new HashMap<>();
|
||||||
|
params.put("jobNumber","123456789");
|
||||||
|
String fileName = "结算单.docx";
|
||||||
|
String tmpPath = "D:\\"+fileName;
|
||||||
|
try{
|
||||||
|
InputStream inputStream = XWPFTemplate.class.getResourceAsStream("/templates/gdmb.docx");
|
||||||
|
XWPFTemplate template = XWPFTemplate.compile(inputStream);
|
||||||
|
template.render(params);
|
||||||
|
FileOutputStream fos = new FileOutputStream(tmpPath);
|
||||||
|
template.write(fos);
|
||||||
|
fos.flush();
|
||||||
|
template.close();
|
||||||
|
WordUtil.down(response,tmpPath,fileName);
|
||||||
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分类查询工单分页
|
* 分类查询工单分页
|
||||||
*
|
*
|
||||||
|
@ -0,0 +1,94 @@
|
|||||||
|
//package cn.iocoder.yudao.module.tickets.tools;
|
||||||
|
//
|
||||||
|
//import cn.iocoder.yudao.module.infra.service.file.FileService;
|
||||||
|
//import cn.iocoder.yudao.module.knowledge.constants.Result;
|
||||||
|
//import cn.iocoder.yudao.module.tickets.controller.admin.DlRepairTicketsController;
|
||||||
|
//import cn.iocoder.yudao.module.tickets.vo.DlRepairTicketsReqVO;
|
||||||
|
//import com.deepoove.poi.XWPFTemplate;
|
||||||
|
//import com.deepoove.poi.config.Configure;
|
||||||
|
//import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
|
||||||
|
//import com.tencentcloudapi.ess.v20201111.models.FileInfo;
|
||||||
|
//import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
//import org.springframework.beans.factory.annotation.Value;
|
||||||
|
//import org.springframework.http.ResponseEntity;
|
||||||
|
//import org.springframework.mock.web.MockMultipartFile;
|
||||||
|
//import org.springframework.stereotype.Component;
|
||||||
|
//import org.springframework.web.multipart.MultipartFile;
|
||||||
|
//
|
||||||
|
//import javax.annotation.Resource;
|
||||||
|
//import java.io.ByteArrayInputStream;
|
||||||
|
//import java.io.ByteArrayOutputStream;
|
||||||
|
//import java.io.FileNotFoundException;
|
||||||
|
//import java.io.IOException;
|
||||||
|
//import java.util.HashMap;
|
||||||
|
//
|
||||||
|
//
|
||||||
|
///**
|
||||||
|
// * 工单导出工具类
|
||||||
|
// * @author lzt
|
||||||
|
// * @date 9:27 2024年10月11日
|
||||||
|
// */
|
||||||
|
//@Component(value = "TOperaDocRequestUtil" )
|
||||||
|
//public class TOperaDocRequestUtil {
|
||||||
|
//
|
||||||
|
// @Resource
|
||||||
|
// private FileService fileService;
|
||||||
|
// @Value("${minio.bucketName:dev}")
|
||||||
|
// private String bucketName;
|
||||||
|
//
|
||||||
|
// public TOperaDocRequestUtil() throws FileNotFoundException {
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// private static String TEMPLATE_PATH = "/templates/gdmb.docx";
|
||||||
|
//
|
||||||
|
// @Autowired
|
||||||
|
// private DlRepairTicketsController dlRepairTicketsController;
|
||||||
|
//
|
||||||
|
// public FileInfo export(DlRepairTicketsReqVO request) throws IOException {
|
||||||
|
// String fileStr = TEMPLATE_PATH;
|
||||||
|
//
|
||||||
|
// if (fileStr != null) {
|
||||||
|
// byte[] inputStream = fileService.downloadFile(bucketName, fileStr);
|
||||||
|
//
|
||||||
|
// // 数据循环填充
|
||||||
|
// LoopRowTableRenderPolicy loopRowTableRenderPolicy = new LoopRowTableRenderPolicy();
|
||||||
|
// Configure configure = Configure.builder().bind("czTable", loopRowTableRenderPolicy).build();
|
||||||
|
//
|
||||||
|
// // word导出到本地
|
||||||
|
// MultipartFile convert = null;
|
||||||
|
// if (fileStr.contains("gdmb.docx")) {
|
||||||
|
// // 操作模板文件-数据填充
|
||||||
|
// XWPFTemplate template = XWPFTemplate.compile(String.valueOf(inputStream), configure).render(
|
||||||
|
// new HashMap<String, Object>() {{
|
||||||
|
// // 填充数据 TODO
|
||||||
|
// //put("requestData", request);
|
||||||
|
//
|
||||||
|
// }}
|
||||||
|
// );
|
||||||
|
// ByteArrayOutputStream outputStreamWord = new ByteArrayOutputStream();;
|
||||||
|
// template.writeAndClose(outputStreamWord);
|
||||||
|
// //IConverter converter = LocalConverter.builder().build();
|
||||||
|
// byte[] bytes = outputStreamWord.toByteArray();
|
||||||
|
// ByteArrayInputStream inputStreamWord = new ByteArrayInputStream(bytes);
|
||||||
|
//
|
||||||
|
// ByteArrayOutputStream outputStreamPdf = new ByteArrayOutputStream();
|
||||||
|
//
|
||||||
|
// //converter.convert(inputStreamWord).as(DocumentType.DOCX).to(outputStreamPdf).as(DocumentType.PDF).execute();
|
||||||
|
// byte[] bytesPdf = outputStreamPdf.toByteArray();
|
||||||
|
// ByteArrayInputStream inputStreamPdf = new ByteArrayInputStream(bytesPdf);
|
||||||
|
//
|
||||||
|
// // convert = new MultipartFile(fileStr.replace(".docx", ".pdf"), "application/pdf", inputStreamPdf.readAllBytes());
|
||||||
|
// convert = new MockMultipartFile("gdmb.pdf", bytes);
|
||||||
|
// }
|
||||||
|
// ResponseEntity<Result<FileInfo>> responseEntity = dlRepairTicketsController.printDocument(convert);
|
||||||
|
//
|
||||||
|
// // 获取 Result<FileInfo> 对象
|
||||||
|
// Result<FileInfo> fileupload = responseEntity.getBody();
|
||||||
|
// if (fileupload != null) {
|
||||||
|
// return fileupload.getData();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
//}
|
@ -0,0 +1,50 @@
|
|||||||
|
package cn.iocoder.yudao.module.tickets.tools;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.BufferedInputStream;
|
||||||
|
import java.io.BufferedOutputStream;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* POI-TL工具类
|
||||||
|
* @author PQZ
|
||||||
|
* @date 13:49 2024/10/12
|
||||||
|
**/
|
||||||
|
public class WordUtil {
|
||||||
|
/**模版路径*/
|
||||||
|
public static String TEMPLATE_PATH = "/templates/gdmb.docx";
|
||||||
|
|
||||||
|
public static void down(HttpServletResponse response, String filePath, String fileName) {
|
||||||
|
String encodeName = null;
|
||||||
|
try {
|
||||||
|
encodeName = encodeStr(fileName);
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
response.addHeader("Access-Control-Allow-Origin", "*");
|
||||||
|
response.addHeader("Access-Control-Expose-Headers", "Content-Disposition,download-filename");
|
||||||
|
response.setHeader("Content-disposition", "attachment; filename=" + encodeName + ";" + "filename*=" + "utf-8''" + encodeName);
|
||||||
|
response.setHeader("download-filename", encodeName);
|
||||||
|
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(filePath));
|
||||||
|
// 输出流
|
||||||
|
BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());) {
|
||||||
|
byte[] buff = new byte[1024];
|
||||||
|
int len = 0;
|
||||||
|
while ((len = bis.read(buff)) > 0) {
|
||||||
|
bos.write(buff, 0, len);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编码工具方法
|
||||||
|
*/
|
||||||
|
public static String encodeStr(String fileName) throws UnsupportedEncodingException {
|
||||||
|
return URLEncoder.encode(fileName,"UTF-8");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
BIN
dl-module-repair/src/main/resources/templates/gdmb.docx
Normal file
BIN
dl-module-repair/src/main/resources/templates/gdmb.docx
Normal file
Binary file not shown.
@ -5,14 +5,14 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.io.FileUtils;
|
import cn.iocoder.yudao.framework.common.util.io.FileUtils;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.module.infra.framework.file.core.client.FileClient;
|
|
||||||
import cn.iocoder.yudao.module.infra.framework.file.core.client.s3.FilePresignedUrlRespDTO;
|
|
||||||
import cn.iocoder.yudao.module.infra.framework.file.core.utils.FileTypeUtils;
|
|
||||||
import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FileCreateReqVO;
|
import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FileCreateReqVO;
|
||||||
import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FilePageReqVO;
|
import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FilePageReqVO;
|
||||||
import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FilePresignedUrlRespVO;
|
import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FilePresignedUrlRespVO;
|
||||||
import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileDO;
|
import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileDO;
|
||||||
import cn.iocoder.yudao.module.infra.dal.mysql.file.FileMapper;
|
import cn.iocoder.yudao.module.infra.dal.mysql.file.FileMapper;
|
||||||
|
import cn.iocoder.yudao.module.infra.framework.file.core.client.FileClient;
|
||||||
|
import cn.iocoder.yudao.module.infra.framework.file.core.client.s3.FilePresignedUrlRespDTO;
|
||||||
|
import cn.iocoder.yudao.module.infra.framework.file.core.utils.FileTypeUtils;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@ -144,5 +144,4 @@ public class FileServiceImpl implements FileService {
|
|||||||
return BeanUtils.toBean(presignedObjectUrl, FilePresignedUrlRespVO.class,
|
return BeanUtils.toBean(presignedObjectUrl, FilePresignedUrlRespVO.class,
|
||||||
object -> object.setConfigId(fileClient.getId()));
|
object -> object.setConfigId(fileClient.getId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@ import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
|||||||
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
||||||
import cn.iocoder.yudao.module.system.api.user.dto.UserDTO;
|
import cn.iocoder.yudao.module.system.api.user.dto.UserDTO;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -52,12 +51,19 @@ public interface AdminUserApi {
|
|||||||
AdminUserRespDTO getUserByOpenId(String openId,String tenantId);
|
AdminUserRespDTO getUserByOpenId(String openId,String tenantId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过用户 登录账户 查询用户
|
* 通过用户 登录账户 查询用户---自动拼租户
|
||||||
*
|
*
|
||||||
* @param username 用户登录账户
|
* @param username 用户登录账户
|
||||||
* @return 用户对象信息
|
* @return 用户对象信息
|
||||||
*/
|
*/
|
||||||
AdminUserRespDTO getUserByUsername(String username);
|
AdminUserRespDTO getUserByUsername(String username);
|
||||||
|
/**
|
||||||
|
* 通过用户 登录账户 查询用户---不带租户
|
||||||
|
*
|
||||||
|
* @param username 用户登录账户
|
||||||
|
* @return 用户对象信息
|
||||||
|
*/
|
||||||
|
AdminUserRespDTO getUserByUsernameNoTenantId(String username);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过用户 ID 查询用户下属
|
* 通过用户 ID 查询用户下属
|
||||||
|
@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.ObjUtil;
|
import cn.hutool.core.util.ObjUtil;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
|
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
|
||||||
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
||||||
import cn.iocoder.yudao.module.system.api.user.dto.UserDTO;
|
import cn.iocoder.yudao.module.system.api.user.dto.UserDTO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
|
||||||
@ -80,7 +81,7 @@ public class AdminUserApiImpl implements AdminUserApi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过用户 登录账户 查询用户
|
* 通过用户 登录账户 查询用户---自动拼租户
|
||||||
*
|
*
|
||||||
* @param username 用户登录账户
|
* @param username 用户登录账户
|
||||||
* @return 用户对象信息
|
* @return 用户对象信息
|
||||||
@ -90,6 +91,18 @@ public class AdminUserApiImpl implements AdminUserApi {
|
|||||||
AdminUserDO user = userService.getUserByUsername(username);
|
AdminUserDO user = userService.getUserByUsername(username);
|
||||||
return BeanUtils.toBean(user, AdminUserRespDTO.class);
|
return BeanUtils.toBean(user, AdminUserRespDTO.class);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 通过用户 登录账户 查询用户---不带租户
|
||||||
|
*
|
||||||
|
* @param username 用户登录账户
|
||||||
|
* @return 用户对象信息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@TenantIgnore
|
||||||
|
public AdminUserRespDTO getUserByUsernameNoTenantId(String username) {
|
||||||
|
AdminUserDO user = userService.getUserByUsernameNoTenantId(username);
|
||||||
|
return BeanUtils.toBean(user, AdminUserRespDTO.class);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<AdminUserRespDTO> getUserListBySubordinate(Long id) {
|
public List<AdminUserRespDTO> getUserListBySubordinate(Long id) {
|
||||||
|
@ -120,6 +120,13 @@ public interface AdminUserService {
|
|||||||
* @return 用户对象信息
|
* @return 用户对象信息
|
||||||
*/
|
*/
|
||||||
AdminUserDO getUserByUsername(String username);
|
AdminUserDO getUserByUsername(String username);
|
||||||
|
/**
|
||||||
|
* 通过用户名查询用户---不带租户ID
|
||||||
|
*
|
||||||
|
* @param username 用户名
|
||||||
|
* @return 用户对象信息
|
||||||
|
*/
|
||||||
|
AdminUserDO getUserByUsernameNoTenantId(String username);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过手机号获取用户
|
* 通过手机号获取用户
|
||||||
|
@ -10,6 +10,8 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|||||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils;
|
import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils;
|
||||||
|
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
|
||||||
|
import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
|
||||||
import cn.iocoder.yudao.module.infra.api.config.ConfigApi;
|
import cn.iocoder.yudao.module.infra.api.config.ConfigApi;
|
||||||
import cn.iocoder.yudao.module.infra.api.file.FileApi;
|
import cn.iocoder.yudao.module.infra.api.file.FileApi;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
|
||||||
@ -278,6 +280,15 @@ public class AdminUserServiceImpl implements AdminUserService {
|
|||||||
return userMapper.selectByUsername(username);
|
return userMapper.selectByUsername(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@TenantIgnore
|
||||||
|
public AdminUserDO getUserByUsernameNoTenantId(String username) {
|
||||||
|
LambdaQueryWrapper<AdminUserDO> queryWrapper = new LambdaQueryWrapper<AdminUserDO>()
|
||||||
|
.eq(AdminUserDO::getUsername,username)
|
||||||
|
.isNull(TenantBaseDO::getTenantId);
|
||||||
|
return userMapper.selectOne(queryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AdminUserDO getUserByMobile(String mobile) {
|
public AdminUserDO getUserByMobile(String mobile) {
|
||||||
return userMapper.selectByMobile(mobile);
|
return userMapper.selectByMobile(mobile);
|
||||||
|
@ -237,6 +237,8 @@ yudao:
|
|||||||
- /admin-api/rescue/driverLogin
|
- /admin-api/rescue/driverLogin
|
||||||
- /admin-api/rescuePayApi/payNotify
|
- /admin-api/rescuePayApi/payNotify
|
||||||
- /admin-api/payApi/payNotify
|
- /admin-api/payApi/payNotify
|
||||||
|
- /repair/tickets/print/**
|
||||||
|
- /admin-api/repair/tickets/print/**
|
||||||
websocket:
|
websocket:
|
||||||
enable: true # websocket的开关
|
enable: true # websocket的开关
|
||||||
path: /infra/ws # 路径
|
path: /infra/ws # 路径
|
||||||
@ -298,6 +300,8 @@ yudao:
|
|||||||
- /admin-api/payApi/payNotify
|
- /admin-api/payApi/payNotify
|
||||||
- /admin-api/base/notice/**
|
- /admin-api/base/notice/**
|
||||||
- /app-api/** #小程序端接口,不区分租户
|
- /app-api/** #小程序端接口,不区分租户
|
||||||
|
- /repair/tickets/print/**
|
||||||
|
- /admin-api/repair/tickets/print/**
|
||||||
ignore-tables:
|
ignore-tables:
|
||||||
- system_tenant
|
- system_tenant
|
||||||
- system_tenant_package
|
- system_tenant_package
|
||||||
@ -345,6 +349,7 @@ yudao:
|
|||||||
- system_users
|
- system_users
|
||||||
- dl_base_notice
|
- dl_base_notice
|
||||||
- base_user_car
|
- base_user_car
|
||||||
|
- base_car_brand
|
||||||
ignore-caches:
|
ignore-caches:
|
||||||
- permission_menu_ids
|
- permission_menu_ids
|
||||||
- oauth_client
|
- oauth_client
|
||||||
|
BIN
yudao-server/src/main/resources/templates/gdmb.docx
Normal file
BIN
yudao-server/src/main/resources/templates/gdmb.docx
Normal file
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user