package com.ruoyi.station.service.impl; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.ruoyi.common.exception.BusinessException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.IdUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.security.Md5Utils; import com.ruoyi.station.domain.MjDept; import com.ruoyi.station.domain.MjTeamMember; import com.ruoyi.station.domain.MjWorkOrder; import com.ruoyi.station.mapper.*; import com.ruoyi.station.model.CountModel; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.station.domain.MjWorkUser; import com.ruoyi.station.service.IMjWorkUserService; import com.ruoyi.common.core.text.Convert; /** * 工作人员Service业务层处理 * * @author ruoyi * @date 2020-08-07 */ @Service @Slf4j public class MjWorkUserServiceImpl implements IMjWorkUserService { @Autowired private MjWorkUserMapper mjWorkUserMapper; @Autowired private MjDeptMapper mjDeptMapper; @Autowired private MjFingerprintMapper fingerprintMapper; @Autowired private MjWorkOrderMapper mjWorkOrderMapper; @Autowired private MjTeamMemberMapper mjTeamMemberMapper; /** * 查询工作人员 * * @param id 工作人员ID * @return 工作人员 */ @Override public MjWorkUser selectMjWorkUserById(Long id) { MjWorkUser mjWorkUser = mjWorkUserMapper.selectMjWorkUserById(id); return mjWorkUser; } /** * 查询工作人员列表 * * @param mjWorkUser 工作人员 * @return 工作人员 */ @Override public List selectMjWorkUserList(MjWorkUser mjWorkUser) { if(mjWorkUser != null && (mjWorkUser.getDeptId()==null||"".equals(mjWorkUser.getDeptId()) ||mjWorkUser.getDeptParentId()==null||"".equals(mjWorkUser.getDeptParentId()))){ List mjWorkUsers = mjWorkUserMapper.selectMjWorkUserListAll(mjWorkUser); for (MjWorkUser workUser : mjWorkUsers) { int count = fingerprintMapper.selectCountByUserId(workUser.getId().toString()); workUser.setTempDataCount(count); } return mjWorkUsers; }else { List mjWorkUsers = mjWorkUserMapper.selectMjWorkUserList(mjWorkUser); /*List list = mjWorkUsers.parallelStream() .filter(mjWorkUser1 -> mjWorkUser1.getDelFlag() == 0) .collect(Collectors.toList());*/ for (MjWorkUser workUser : mjWorkUsers) { int count = fingerprintMapper.selectCountByUserId(workUser.getId().toString()); workUser.setTempDataCount(count); } return mjWorkUsers; } } /** * 新增工作人员 * * @param mjWorkUser 工作人员 * @return 结果 */ @Override public int insertMjWorkUser(MjWorkUser mjWorkUser) { mjWorkUser.setCreateTime(DateUtils.getNowDate()); mjWorkUser.setUpdateTime(DateUtils.getNowDate()); mjWorkUser.setUserId(IdUtils.fastSimpleUUID()); //增加部门名称 MjDept mjDept = mjDeptMapper.selectMjDeptByIdorName(mjWorkUser.getDeptId(),mjWorkUser.getDeptName()); mjWorkUser.setDeptId(mjDept.getId()); mjWorkUser.setDeptName(mjDept.getDeptName()); mjWorkUser.setPass(Md5Utils.hash(mjWorkUser.getPass())); if(mjWorkUser.getDelFlag()==null){ mjWorkUser.setDelFlag(0); } return mjWorkUserMapper.insertMjWorkUser(mjWorkUser); } /** * 修改工作人员 * * @param mjWorkUser 工作人员 * @return 结果 */ @Override public int updateMjWorkUser(MjWorkUser mjWorkUser) { mjWorkUser.setUpdateTime(DateUtils.getNowDate()); //增加部门名称 MjDept mjDept = mjDeptMapper.selectMjDeptByIdorName(mjWorkUser.getDeptId(),mjWorkUser.getDeptName()); mjWorkUser.setDeptId(mjDept.getId()); mjWorkUser.setDeptName(mjDept.getDeptName()); mjWorkUser.setPass(Md5Utils.hash(mjWorkUser.getPass())); return mjWorkUserMapper.updateMjWorkUser(mjWorkUser); } /** * 删除工作人员对象 * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteMjWorkUserByIds(String ids) { int count=0; String[] strings = Convert.toStrArray(ids); for (String string : strings) { MjWorkUser mjWorkUser = mjWorkUserMapper.selectMjWorkUserById(Long.parseLong(string)); mjWorkUser.setDelFlag(1); mjWorkUserMapper.updateMjWorkUser(mjWorkUser); count++; } return count; } /** * 删除工作人员信息 * * @param id 工作人员ID * @return 结果 */ @Override public int deleteMjWorkUserById(Long id) { MjWorkUser mjWorkUser = mjWorkUserMapper.selectMjWorkUserById(id); mjWorkUser.setDelFlag(1); return mjWorkUserMapper.updateMjWorkUser(mjWorkUser); } @Override public String importUser(List userList, boolean isUpdateSupport, String operName) { if (StringUtils.isNull(userList) || userList.size() == 0) { throw new BusinessException("导入用户数据不能为空!"); } int successNum = 0; int failureNum = 0; StringBuilder successMsg = new StringBuilder(); StringBuilder failureMsg = new StringBuilder(); //String password = configService.selectConfigByKey("sys.user.initPassword"); for (MjWorkUser user : userList) { try { // 验证是否存在这个用户 List userList1 = mjWorkUserMapper.selectUserByLoginName(user.getUserName()); if (userList1.size()==0) { //user.setPass(Md5Utils.hash(user.getUserName() + password)); user.setCreateBy(operName); MjDept mjDept = mjDeptMapper.selectMjDeptByIdorName(user.getDeptId(),null); if(!mjDept.getDeptName().equals(user.getDeptName())){ failureNum++; failureMsg.append("
" + failureNum + "、账号 " + user.getUserName() + " 部门id和名称不匹配"); } this.insertMjWorkUser(user); successNum++; successMsg.append("
" + successNum + "、账号 " + user.getUserName() + " 导入成功"); } /* else if (isUpdateSupport) { user.setUpdateBy(operName); this.updateMjWorkUser(user); successNum++; successMsg.append("
" + successNum + "、账号 " + user.getUserName() + " 更新成功"); }*/ else { failureNum++; failureMsg.append("
" + failureNum + "、账号 " + user.getUserName() + " 已存在"); } } catch (Exception e) { failureNum++; String msg = "
" + failureNum + "、账号 " + user.getUserName() + " 导入失败:"; failureMsg.append(msg + e.getMessage()); log.error(msg, e); } } if (failureNum > 0) { failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); throw new BusinessException(failureMsg.toString()); } else { successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); } return successMsg.toString(); } /** * 获取用户数量 */ @Override public Integer selectWorkUserCount() { return mjWorkUserMapper.selectWorkUserCount(); } /** * 获取用户授权方式 * @return */ @Override public Map getWorkUserAuthorizationType(List mjWorkUserList) { Integer monthCount = null; int longAuth = 0; //长期授权 int shortAuth = 0; //短期授权 int ERPAuth = 0; //ERP授权 if(mjWorkUserList != null && mjWorkUserList.size() > 0) { for(MjWorkUser mjWorkUser : mjWorkUserList) { if(mjWorkUser != null) { MjWorkOrder mjWorkOrder = mjWorkOrderMapper.selectValidOrderByUserId(mjWorkUser.getId()); if(mjWorkOrder != null && mjWorkOrder.getStartTime() != null && mjWorkOrder.getEndTime() != null) { shortAuth++; /*try { monthCount = monthsBetween(mjWorkOrder.getStartTime(), mjWorkOrder.getEndTime()); //获取工单有效月份 if(monthCount != null) { if(monthCount >= 12) { //判断有效年份是否超过一年,超过则为长期授权否则短期授权 longAuth++; }else { shortAuth++; } } }catch (ParseException e) { e.printStackTrace(); return null; }*/ } } } } //长期 int count = mjTeamMemberMapper.selectCountMember(); //临时授权 int temporary = mjWorkOrderMapper.selectCountTemporary(); //工作票 int erp = mjWorkOrderMapper.selectCountERP(); //总数 int num = count + temporary + erp; List list = new ArrayList<>(); CountModel model= new CountModel(); model.setValue(count).setName("长期授权"); CountModel model1= new CountModel(); model1.setValue(temporary).setName("临时授权"); CountModel model2= new CountModel(); model2.setValue(erp).setName("工作票授权"); list.add(model); list.add(model1); list.add(model2); System.out.println(list); List mjTeamMembers = mjTeamMemberMapper.selectMjTeamMemberList(null); if(mjTeamMembers != null && mjTeamMembers.size() > 0) { longAuth = mjTeamMembers.size(); } Map map = new HashMap<>(); map.put("longAuth", longAuth); map.put("shortAuth", shortAuth); map.put("ERPAuth", ERPAuth); map.put("model", list); map.put("num", num); return map; } @Override public int monthsBetween(Date start, Date end) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar startDate = Calendar.getInstance(); Calendar endDate = Calendar.getInstance(); startDate.setTime(sdf.parse(sdf.format(start))); endDate.setTime(sdf.parse(sdf.format(end))); int result = yearsBetween(sdf.format(start), sdf.format(end)) * 12 + endDate.get(Calendar.MONTH) - startDate.get(Calendar.MONTH); return result == 0 ? 1 : Math.abs(result); } @Override public String getUserName(Long userId) { return mjWorkUserMapper.getUserName(userId); } @Override public List getUserNames(List userIds) { return mjWorkUserMapper.getUserNames(userIds); } public int yearsBetween(String start, String end) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar startDate = Calendar.getInstance(); Calendar endDate = Calendar.getInstance(); startDate.setTime(sdf.parse(start)); endDate.setTime(sdf.parse(end)); return (endDate.get(Calendar.YEAR) - startDate.get(Calendar.YEAR)); } }