package com.huimv.receive.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.huimv.receive.common.utils.Print;
import com.huimv.receive.common.utils.Result;
import com.huimv.receive.common.utils.ResultCode;
import com.huimv.receive.entity.*;
import com.huimv.receive.entity.vo.UserAccountVo;
import com.huimv.receive.entity.vo.UserAgeAndGender;
import com.huimv.receive.entity.vo.UserJob;
import com.huimv.receive.mapper.BaseLocationMapper;
import com.huimv.receive.mapper.FarmMapper;
import com.huimv.receive.mapper.SysAccountMultilevelMapper;
import com.huimv.receive.mapper.SysUserMapper;
import com.huimv.receive.service.IBaseLocationService;
import com.huimv.receive.service.IFarmService;
import com.huimv.receive.service.ISysUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.aspectj.weaver.ast.Var;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.List;
import java.util.Map;
/**
*
* 服务实现类
*
*
* @author author
* @since 2023-09-04
*/
@Service
public class SysUserServiceImpl extends ServiceImpl implements ISysUserService {
@Autowired
private BaseLocationMapper baseLocationMapper;
@Autowired
private FarmMapper farmMapper;
@Autowired
private SysUserMapper userMapper;
@Autowired
private SysAccountMultilevelMapper sysAccountMultilevelMapper;
@Override
public Result pageAll(Map map) {
int pageNum = (Integer)map.get("pageNum");
int pageSize = (Integer)map.get("pageSize");
String searchStr = (String)map.get("searchStr");
String job = (String)map.get("job");
String workLocation = (String)map.get("workLocation");
String workLocationType =(String) map.get("workLocationType");
String farmId = (String) map.get("farmId");
if (checkFarm(farmId))
return new Result(10001,"牧场信息为空",false);
QueryWrapper wrapper = new QueryWrapper<>();
if (ObjectUtil.isEmpty(pageNum) || pageNum<1)
pageNum = 1;
if (ObjectUtil.isEmpty(pageSize) || pageSize<1 )
pageNum = 10;
wrapper.eq("farm_id",farmId);
wrapper.eq(ObjectUtil.isNotEmpty(job),"job",job);
wrapper.eq(ObjectUtil.isNotEmpty(workLocation),"work_location",workLocation);
wrapper.eq(ObjectUtil.isNotEmpty(workLocationType),"work_location_type",workLocationType);
if (StringUtils.isNotBlank(searchStr))
wrapper.and(i -> i.like("user_name",searchStr).or().like("user_phone",searchStr));
wrapper.orderByDesc("id");
IPage page = this.page(new Page<>(pageNum, pageSize), wrapper);
return new Result(ResultCode.SUCCESS,page);
}
@Override
public Result listWorkLocation(Map map) {
String farmId = (String)map.get("farmId");
if (checkFarm(farmId))
return new Result(10001,"牧场信息为空",false);
return new Result(ResultCode.SUCCESS,baseLocationMapper.selectList(new QueryWrapper().eq("farm_id",farmId).groupBy("location_type").orderByAsc("location_type")));
}
@Override
public Result pageAccount(Map map) {
int pageNum = (Integer)map.get("pageNum");
int pageSize = (Integer)map.get("pageSize");
String searchStr = (String)map.get("searchStr");
String job = (String)map.get("job");
String workLocation = (String)map.get("workLocation");
String workLocationType = (String)map.get("workLocationType");
String farmId = (String) map.get("farmId");
if (checkFarm(farmId))
return new Result(10001,"牧场信息为空",false);
QueryWrapper wrapper = new QueryWrapper<>();
if (ObjectUtil.isEmpty(pageNum) || pageNum<1)
pageNum = 1;
if (ObjectUtil.isEmpty(pageSize) || pageSize<1 )
pageSize = 10;
// wrapper.eq("farm_id",farmId);
wrapper.eq(ObjectUtil.isNotEmpty(job),"job",job);
wrapper.eq(ObjectUtil.isNotEmpty(workLocation),"work_location",workLocation);
wrapper.eq(ObjectUtil.isNotEmpty(workLocationType),"work_location_type",workLocationType);
if (StringUtils.isNotBlank(searchStr))
wrapper.and(i -> i.like("user_name",searchStr).or().like("user_id",searchStr));
Page userAccountVoPage = new Page<>(pageNum,pageSize);
IPage userAccountVoIPage = userMapper.pageAccount(userAccountVoPage,wrapper,farmId);
return new Result(ResultCode.SUCCESS,userAccountVoIPage);
}
@Override
public Result addAccount(Map map) {
Integer id = (Integer)map.get("id");
String account = (String)map.get("account");
String password = (String)map.get("password");
SysUser sysUser = this.getById(id);
Integer countAccount = sysAccountMultilevelMapper.selectCount(new QueryWrapper().eq("account",account));
if (countAccount >0){
return new Result(10001,"该账号已存在",false);
}
Integer countUser = sysAccountMultilevelMapper.selectCount(new QueryWrapper().eq("user_id",id));
if (countUser >0){
return new Result(10001,"该用户已绑定账号",false);
}
SysAccountMultilevel sysAccountMultilevel = new SysAccountMultilevel();
sysAccountMultilevel.setAccount(account);
sysAccountMultilevel.setPassword(password);
sysAccountMultilevel.setUserName(sysUser.getUserName());
sysAccountMultilevel.setAccountStatus(1);
sysAccountMultilevel.setFarmId(Integer.parseInt(sysUser.getFarmId()));
sysAccountMultilevel.setFarmIds(sysUser.getFarmId());
sysAccountMultilevel.setType(sysUser.getJob());
sysAccountMultilevel.setWorkLocation(sysUser.getWorkLocation());
sysAccountMultilevel.setWorkLocationType(sysUser.getWorkLocationType());
sysAccountMultilevel.setPhone(sysUser.getUserPhone());
sysAccountMultilevel.setWorkName(sysUser.getDepartment());
sysAccountMultilevel.setPapersCode(sysUser.getCardNum());
sysAccountMultilevel.setPapersType(sysUser.getCardType());
sysAccountMultilevel.setUserId(id);
sysAccountMultilevelMapper.insert(sysAccountMultilevel);
return new Result(10000,"添加成功",true);
}
@Override
public Result list(Map map) {
String farmId = (String)map.get("farmId");
if (checkFarm(farmId))
return new Result(10001,"牧场信息为空",false);
return new Result(ResultCode.SUCCESS,this.list());
}
@Override
public Result updateAccount(Map map) {
Integer id = (Integer)map.get("id");
String account = (String)map.get("account");
String password = (String)map.get("password");
Integer countAccount = sysAccountMultilevelMapper.selectCount(new QueryWrapper().eq("account",account));
if (countAccount >1){
return new Result(10001,"改账号已存在",false);
}
SysAccountMultilevel sysAccountMultilevel = new SysAccountMultilevel();
sysAccountMultilevel.setAccount(account);
sysAccountMultilevel.setPassword(password);
sysAccountMultilevelMapper.update(sysAccountMultilevel,new UpdateWrapper().eq("user_id",id));
return new Result(10000,"修改成功",true);
}
@Override
public void printUser(HttpServletResponse httpServletRequest, Map paramsMap) throws Exception {
String ids = paramsMap.get("ids");
String[] split = ids.split(",");
List list = new ArrayList<>();
for (String s : split) {
SysUser admission = userMapper.selectById(s);
list.add(admission);
}
Print.printUser(list);
}
@Override
public Result removeAccount(Map map) {
String ids = map.get("ids");
sysAccountMultilevelMapper.delete(new QueryWrapper().eq("user_id",ids.split(",")));
return new Result(10000,"删除成功",true);
}
@Override
public Result userAgeAndGender(Map map) {
String farmId = map.get("farmId");
if (checkFarm(farmId))
return new Result(10001,"牧场信息为空",false);
List userAgeAndGenders= userMapper.userAgeAndGender(farmId);
return new Result(ResultCode.SUCCESS,userAgeAndGenders);
}
@Override
public Result userJob(Map map) {
String farmId = map.get("farmId");
if (checkFarm(farmId))
return new Result(10001,"牧场信息为空",false);
List userJobs= userMapper.userJob(farmId);
return new Result(ResultCode.SUCCESS,userJobs);
}
private boolean checkFarm(String farmId){
if (StringUtils.isBlank(farmId) )
return true;
Farm byId = farmMapper.selectById(farmId);
if (ObjectUtil.isEmpty(byId))
return true;
return false;
}
}