ganzi-api/inventory-ent/src/main/java/com/rzyc/service/PcBusinessService.java

399 lines
18 KiB
Java
Raw Normal View History

package com.rzyc.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.common.utils.*;
import com.common.utils.encryption.MD5;
import com.common.utils.model.Code;
import com.common.utils.model.Message;
import com.common.utils.model.SingleResult;
import com.rzyc.config.RedisUtil;
import com.rzyc.controller.BaseController;
import com.rzyc.enums.RedisKeys;
import com.rzyc.model.*;
import com.rzyc.model.dto.*;
import com.rzyc.model.ent.EntPost;
import com.rzyc.model.ent.EntUser;
import com.rzyc.model.ent.SysEnterprise;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 企业端pc业务 Service
* @author Xuwanxin
* @date 2022/9/29
* */
@Service
public class PcBusinessService extends BaseController {
RedisUtil redisUtil;
@Autowired
public PcBusinessService(RedisUtil redisUtil) {
this.redisUtil = redisUtil;
}
public SingleResult entUserTree(String enterpriseId, String postId){
SingleResult singleResult = new SingleResult();
//读缓存get时候如果多级用:进行分隔
if (null != enterpriseId && postId == null){
List<EntPost> posts = (List<EntPost>) redisUtil.get(redisUtil.appendSymbol(RedisKeys.POST.getKey(),enterpriseId));
if (null != posts && posts.size() > 0 ){
singleResult.setData(posts);
return singleResult;
}
}else if (null != enterpriseId && postId != enterpriseId){
List<EntPost>posts = (List<EntPost>) redisUtil.get(redisUtil.appendSymbol(RedisKeys.POST.getKey(),enterpriseId,postId));
if (null != posts && posts.size() > 0 ){
singleResult.setData(posts);
return singleResult;
}
}
SysEnterprise sysEnterprise = sysEnterpriseMapper.selectByPrimaryKey(enterpriseId);
List<EntPost> list = entPostMapper.selectEntUserTree(enterpriseId,postId);
/**
* sql里进行了order by如果传入postId就是查询非全部的数结构需要加入一个公司所以把第一个最大权限设置为company这样公司才会在树的最上面
* 相反不穿postId就是查询全部默认会有company打头就不用再修改list的0对象
*/
if (null != postId){
list.get(0).setParentId("company");
}
//加入公司为第一个树结构
EntPost entPost = new EntPost();
entPost.setName(sysEnterprise.getEntname());
entPost.setPostId("company");
list.add(entPost);
JSONArray jsonArray = handleEntUserTree(list);
List<EntPost>posts = JSONArray.parseArray(JSONArray.toJSONString(jsonArray),EntPost.class);
singleResult.setData(posts);
//存入redis缓存
try {
if (null != enterpriseId && postId == null){
redisUtil.set(redisUtil.appendSymbol(RedisKeys.POST.getKey(),enterpriseId),posts,0);
}else if (null != enterpriseId && postId != enterpriseId){
redisUtil.set(redisUtil.appendSymbol(RedisKeys.POST.getKey(),postId,enterpriseId),posts,0);
}
}catch (Exception e){
e.printStackTrace();
}
return singleResult;
}
/**
* 处理企业用户数结构list
*/
private JSONArray handleEntUserTree(List<EntPost> list){
List<Map<String,Object>> data = new ArrayList<>();
for(EntPost entPost : list){
if(StringUtils.isBlank(entPost.getParentId())){
entPost.setParentId("");
}
Map<String,Object> entPostMap = new HashMap<String,Object>();
entPostMap.put("postId",entPost.getPostId());
entPostMap.put("name",entPost.getName());
entPostMap.put("parentId",entPost.getParentId());
entPostMap.put("subordinates",entPost.getSubordinates());
data.add(entPostMap);
}
com.alibaba.fastjson.JSONArray result = TypeConversion.listToTree(com.alibaba.fastjson.JSONArray.parseArray(JSON.toJSONString(data)),"postId","parentId","children");
return result;
}
public SingleResult entUserPostList(EntUserPostListDto entUserPostListDto){
SingleResult singleResult = new SingleResult();
entUserPostListDto.setPage(entUserPostListDto.getPageSize() * (entUserPostListDto.getPage() - 1));
List<EntPostList>list = entPostListMapper.selectEntPostList(entUserPostListDto.getEnterpriseId(),entUserPostListDto.getEntUserId(),
entUserPostListDto.getPostId(),entUserPostListDto.getPage(),entUserPostListDto.getPageSize());
singleResult.setData(list);
return singleResult;
}
public SingleResult entUserPostTask(EntUserPostTaskDto entUserPostTaskDto){
SingleResult singleResult = new SingleResult();
entUserPostTaskDto.setPage(entUserPostTaskDto.getPageSize() * (entUserPostTaskDto.getPage() - 1));
//EntPostTask
List<EntPostTask>list = entPostTaskMapper.selectEntUserPostTask(entUserPostTaskDto.getEnterpriseId(),entUserPostTaskDto.getEntUserId(),entUserPostTaskDto.getPostId()
,entUserPostTaskDto.getListId(),entUserPostTaskDto.getContent(),entUserPostTaskDto.getTaskState(),
entUserPostTaskDto.getPage(),entUserPostTaskDto.getPageSize());
singleResult.setData(list);
return singleResult;
}
public SingleResult entUserPostDuty(EntUserPostDutyDto entUserPostDutyDto){
SingleResult singleResult = new SingleResult();
entUserPostDutyDto.setPage( entUserPostDutyDto.getPageSize() * (entUserPostDutyDto.getPage() - 1));
//EntPostDuty
List<EntPostDuty>list = entPostDutyMapper.selectEntUserPostDuty(entUserPostDutyDto.getEnterpriseId(),entUserPostDutyDto.getPostId(),entUserPostDutyDto.getPage(),entUserPostDutyDto.getPageSize());
singleResult.setData(list);
return singleResult;
}
public SingleResult entUserCredential(String enterpriseId, String entUserId,Integer page,Integer pageSize){
SingleResult singleResult = new SingleResult();
page = pageSize * (page - 1);
List<EntUserCredential>list = entUserCredentialMapper.selectEntUserCredential(enterpriseId,entUserId,page,pageSize);
singleResult.setData(list);
return singleResult;
}
public SingleResult entUserCredentialUpdate(List<EntUserCredentialUpdateDto> entUserCredentialUpdateDto) throws Exception {
SingleResult singleResult = new SingleResult();
Integer result = 0;
for (EntUserCredentialUpdateDto e:entUserCredentialUpdateDto) {
EntUserCredential entUserCredential = new EntUserCredential();
BeanUtils.copyProperties(e,entUserCredential);
if (StringUtils.isNotBlank(entUserCredential.getCredentialId())) {
entUserCredential.setModifyBy(getUserId());
entUserCredential.setModifyTime(new Date());
result += entUserCredentialMapper.updateEntUserCredential(entUserCredential);
}else {
entUserCredential.setCredentialId(RandomNumber.getUUid());
entUserCredential.setCreateBy(getUserId());
entUserCredential.setCreateTime(new Date());
result += entUserCredentialMapper.insertEntUserCredential(entUserCredential);
}
}
if (result != entUserCredentialUpdateDto.size()){
singleResult.setCode(Code.ERROR.getCode());
singleResult.setMessage(Message.ERROR);
}
return singleResult;
}
public SingleResult entUserCredentialDelete(String credentialId){
SingleResult singleResult = new SingleResult();
int result = entUserCredentialMapper.entUserCredentialDelete(credentialId);
if (result==1){
singleResult.setCode(Code.SUCCESS.getCode());
singleResult.setMessage(Message.SUCCESS);
}
return singleResult;
}
public SingleResult entUserList(String keyContent,Integer page,Integer pageSize){
SingleResult singleResult = new SingleResult();
page = pageSize * (page - 1);
List<EntUser>users = entUserMapper.selectEntUserList(keyContent,page,pageSize);
//计算履职百分比,后期这里使用redis来读取履职进度
for (EntUser e:users) {
Integer total = e.getFinishTask() + e.getOngoingTask() + e.getOverTimeTask();
double percent = Arith.div(total,e.getFinishTask()) * 100;
e.setEntUserTaskPercent(percent);
}
singleResult.setData(users);
return singleResult;
}
public SingleResult addOrUpdateEntUser(AddOrUpdateEntUserDto addOrUpdateEntUserDto) throws Exception {
SingleResult singleResult = new SingleResult();
//正则验证手机号
String regex = "^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$";
Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(addOrUpdateEntUserDto.getMobile());
if (!m.matches()){
singleResult.setCode(Code.ERROR.getCode());
singleResult.setMessage(Message.MOBILE_IS_ILLEGAL);
return singleResult;
}
//验证数据重复
EntUser entUser = new EntUser();
BeanUtils.copyProperties(addOrUpdateEntUserDto,entUser);
EntPost entPost = entPostMapper.selectById(addOrUpdateEntUserDto.getPostId());
entUser.setPostPath(entPost.getPostPath());
entUser.setPostPathName(entPost.getPostId());
//密码为用户名加手机号
entUser.setPasswd(MD5.md5(entUser.getName() + entUser.getMobile()));
int result = 0 ;
if (StringUtils.isNotBlank(entUser.getEntUserId())){
result = entUserMapper.updateEntUser(entUser);
}else {
result = entUserMapper.insert(entUser);
}
if (result != 1){
singleResult.setCode(Code.ERROR.getCode());
singleResult.setMessage(Message.ERROR);
}
//插入证件图
singleResult = this.entUserCredentialUpdate(addOrUpdateEntUserDto.getEntUserCredentialUpdateDtos());
return singleResult;
}
public SingleResult validEntUserMobile(String mobile, String entUserId){
SingleResult singleResult = new SingleResult();
//正则验证手机号
String regex = "^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$";
Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(mobile);
if (!m.matches()){
singleResult.setCode(Code.ERROR.getCode());
singleResult.setMessage(Message.MOBILE_IS_ILLEGAL);
return singleResult;
}
EntUser entUser = entUserMapper.validMobile(mobile);
if (entUser != null && !entUserId.equals(entUser.getEntUserId()) ){
singleResult.setCode(Code.ERROR.getCode());
singleResult.setMessage(Message.REGISTERED);
}
return singleResult;
}
public SingleResult validEntUserName(String name, String entUserId){
SingleResult singleResult = new SingleResult();
EntUser entUser = entUserMapper.validName(name);
if (entUser != null && !entUserId.equals(entUser.getEntUserId())){
singleResult.setCode(Code.ERROR.getCode());
singleResult.setMessage(Message.HAS_USERNAME);
}
return singleResult;
}
2022-10-20 17:29:33 +08:00
/*public SingleResult entEquipmentTypeList(String enterpriseId){
2022-10-18 11:36:52 +08:00
SingleResult singleResult = new SingleResult();
List<EntDeviceType> redisEntDeviceTypes =(List<EntDeviceType>) redisUtil.get(redisUtil.appendSymbol(RedisKeys.DEVICE.getKey(),enterpriseId));
if (null != redisEntDeviceTypes && redisEntDeviceTypes.size()>0){
singleResult.setData(redisEntDeviceTypes);
return singleResult;
}
List<EntDeviceType> entDeviceTypes = entDeviceTypeMapper.selectEntEquipmentTypeList(enterpriseId);
//树结构处理
JSONArray jsonArray = handleEntEquipment(entDeviceTypes);
List<EntPost>posts = JSONArray.parseArray(JSONArray.toJSONString(jsonArray),EntPost.class);
singleResult.setData(posts);
//存redis
boolean insertRedisResult = redisUtil.set(redisUtil.appendSymbol(RedisKeys.DEVICE.getKey(),enterpriseId),posts,0);
2022-10-18 11:36:52 +08:00
return singleResult;
}
/**
* 处理企业用户数结构list
*/
private JSONArray handleEntEquipment(List<EntDeviceType> list){
List<Map<String,Object>> data = new ArrayList<>();
for(EntDeviceType entDeviceType : list){
if(StringUtils.isBlank(entDeviceType.getParentId())){
entDeviceType.setParentId("");
}
Map<String,Object> entPostMap = new HashMap<String,Object>();
entPostMap.put("typeId",entDeviceType.getTypeId());
entPostMap.put("name",entDeviceType.getName());
entPostMap.put("parentId",entDeviceType.getParentId());
entPostMap.put("logo",entDeviceType.getLogo());
data.add(entPostMap);
}
com.alibaba.fastjson.JSONArray result = TypeConversion.listToTree(com.alibaba.fastjson.JSONArray.parseArray(JSON.toJSONString(data)),"typeId","parentId","children");
return result;
}
public SingleResult entEquipmentList(String enterpriseId, String typeId){
SingleResult singleResult = new SingleResult();
List<EntDevice> devices = entDeviceMapper.selectEntEquipmentList(enterpriseId,typeId);
singleResult.setData(devices);
return singleResult;
}
public SingleResult entEquipmentStatistic(String enterpriseId, String deviceId){
SingleResult singleResult = new SingleResult();
entDeviceMapper.entEquipmentStatistic(enterpriseId,deviceId);
return singleResult;
}
public SingleResult addOrUpdateEntPost(AddOrUpdateEntPostDto addOrUpdateEntPostDto) throws Exception {
SingleResult singleResult = new SingleResult();
EntPost entPost = new EntPost();
BeanUtils.copyProperties(addOrUpdateEntPostDto,entPost);
Integer result = 0;
if (null != addOrUpdateEntPostDto && null != addOrUpdateEntPostDto.getPostId()){
entPost.setModifyBy(getUserId());
entPost.setModifyTime(new Date());
result = entPostMapper.updateEntPost(entPost);
}else {
entPost.setCreateBy(getUserId());
entPost.setCreateTime(new Date());
result = entPostMapper.insertEntPost(entPost);
}
if (result != 1 ){
singleResult.setCode(Code.ERROR.getCode());
singleResult.setMessage(Message.ERROR);
}
return singleResult;
}
public SingleResult addOrUpdateEntEquipmentType(AddOrUpdateEntEquipmentTypeDto addOrUpdateEntEquipmentTypeDto) throws Exception {
SingleResult singleResult = new SingleResult();
EntDeviceType entDeviceType = new EntDeviceType();
BeanUtils.copyProperties(addOrUpdateEntEquipmentTypeDto,entDeviceType);
Integer result = 0;
if (null != addOrUpdateEntEquipmentTypeDto && null != addOrUpdateEntEquipmentTypeDto.getTypeId()){
entDeviceType.setModifyBy(getUserId());
entDeviceType.setModifyTime(new Date());
result = entDeviceTypeMapper.updateEntEquipment(entDeviceType);
}else {
entDeviceType.setCreateBy(getUserId());
entDeviceType.setCreateTime(new Date());
entDeviceType.setTypeId(RandomNumber.getUUid());
result = entDeviceTypeMapper.addEntEquipment(entDeviceType);
}
if (result != 1 ){
singleResult.setCode(Code.ERROR.getCode());
singleResult.setMessage(Message.ERROR);
}else {
//更新redis
List<EntDeviceType> entDeviceTypes = entDeviceTypeMapper.selectEntEquipmentTypeList(addOrUpdateEntEquipmentTypeDto.getEnterpriseId());
//树结构处理
JSONArray jsonArray = handleEntEquipment(entDeviceTypes);
List<EntPost>posts = JSONArray.parseArray(JSONArray.toJSONString(jsonArray),EntPost.class);
singleResult.setData(posts);
//存redis
boolean insertRedisResult = redisUtil.set(redisUtil.appendSymbol(RedisKeys.DEVICE.getKey(),addOrUpdateEntEquipmentTypeDto.getEnterpriseId()),posts,0);
}
return singleResult;
}
public SingleResult addOrUpdateEntEquipment(AddOrUpdateEntEquipmentDto addOrUpdateEntEquipmentDto) throws Exception {
SingleResult singleResult = new SingleResult();
EntDevice entDevice = new EntDevice();
BeanUtils.copyProperties(addOrUpdateEntEquipmentDto,entDevice);
Integer result = 0;
if (null != addOrUpdateEntEquipmentDto && null != addOrUpdateEntEquipmentDto.getDeviceId()){
entDevice.setModifyBy(getUserId());
entDevice.setModifyTime(new Date());
result = entDeviceMapper.updateEntDevice(entDevice);
}else {
entDevice.setCreateBy(getUserId());
entDevice.setCreateTime(new Date());
entDevice.setDeviceId(RandomNumber.getUUid());
result = entDeviceMapper.insert(entDevice);
}
if (result != 1 ){
singleResult.setCode(Code.ERROR.getCode());
singleResult.setMessage(Message.ERROR);
}
return singleResult;
}
}