| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344 |
- package cn.com.lzt.dingding.service.impl;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import cn.hutool.core.date.DateUtil;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.daju.mix.dao.entity.TBusAttendanceTotal;
- import com.daju.mix.dao.entity.TSBaseUser;
- import com.daju.mix.dao.mapper.TBCarMapper;
- import com.daju.mix.dao.mapper.TBusAttendanceTotalMapper;
- import com.daju.mix.dao.mapper.TSBaseUserMapper;
- import com.daju.mix.dto.UserClockDto;
- import com.dingtalk.api.response.OapiAttendanceGetcolumnvalResponse;
- import org.apache.commons.lang.xwork.StringUtils;
- import org.jeecgframework.core.common.service.impl.CommonServiceImpl;
- import org.jeecgframework.web.system.service.SystemService;
- import org.jeecgframework.web.system.service.UserService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import cn.com.lzt.arrangeduty.service.ArrangeDutyServiceI;
- import cn.com.lzt.attendancetemp.service.AttendanceTempServiceI;
- import cn.com.lzt.calendar.service.CalendarServiceI;
- import cn.com.lzt.common.util.dingding.DingTool;
- import cn.com.lzt.dingattendanceinfo.service.DingAttendanceinfoServiceI;
- import cn.com.lzt.dingding.service.DingdingService;
- import cn.com.lzt.projarrangedetail.service.ProjarrangeDetailServiceI;
- import cn.com.lzt.userarrangedetail.service.UserArrangeDetailServiceI;
- import com.dingtalk.open.client.api.model.corp.CorpUserDetail;
- import com.dingtalk.open.client.api.model.corp.Department;
- import javax.annotation.Resource;
- @Service("DingdingService")
- @Transactional
- public class DingdingServiceImpl extends CommonServiceImpl implements DingdingService{
-
- @Autowired
- private UserService userService;
-
- @Autowired
- private DingAttendanceinfoServiceI dingAttendanceinfoService;
-
- @Autowired
- private SystemService systemService;
-
- @Autowired
- private CalendarServiceI calendarService;
-
- @Autowired
- private AttendanceTempServiceI attendanceTempService;
-
- @Autowired
- private ProjarrangeDetailServiceI projarrangeDetailService;
-
- @Autowired
- private UserArrangeDetailServiceI userArrangeDetailService;
-
- @Autowired
- private ArrangeDutyServiceI arrangeDutyService;
- @Resource
- private TSBaseUserMapper tsBaseUserMapper;
- @Resource
- private TBCarMapper tbCarMapper;
- @Resource
- private TBusAttendanceTotalMapper tBusAttendanceTotalMapper;
- /**
- * 创建部门
- *
- * @param name 部门名称
- * @param parentId 父部门ID
- * @return 部门ID(创建失败,返回"")
- */
- public String createDepartment(String name, String parentId){
- DingTool dingTool = new DingTool();
- if("".equals(parentId)) {
- parentId = "1";
- }
- return dingTool.createDepartment(name, parentId, "1", false);
- }
-
- /**
- * 查询部门详情
- *
- * @param deptId 部门ID
- *
- */
- public Department getDepartment(String deptId) {
- DingTool dingTool = new DingTool();
- return dingTool.getDepartment(deptId);
- }
- /**
- * 查询子部门信息
- *
- * @param parentDeptId 父部门ID
- * @return deptList 子部门信息List
- */
- public List<Department> listDepartments(String parentDeptId) {
- DingTool dingTool = new DingTool();
- return dingTool.listDepartments(parentDeptId);
- }
-
- /**
- * 更新部门信息
- *
- * @param id 部门Id
- * @param name 部门名
- * @param parentId 父部门Id
- *
- * @return returnFlg 更新成败flg
- *
- *
- */
- public boolean updateDepartment(long id, String name, String parentId) {
- if("".equals(parentId)) {
- parentId = "1";
- }
- DingTool dingTool = new DingTool();
- return dingTool.updateDepartment(id, name, parentId, "1", false, true, "", false, "", "", false, "", "", "");
- }
-
-
- /**
- * 删除部门
- *
- * @param id 部门Id
- *
- * @return returnFlg 删除成败flg
- *
- */
- public boolean deleteDepartment(long id) {
- DingTool dingTool = new DingTool();
- return dingTool.deleteDepartment(id);
- }
-
- /**
- * 新建人员
- *
- * @param userid String 人员编号
- * @param name String 人员姓名
- * @param department List 成员所属部门id列表
- * @param mobile String 手机号码
- * @param jobnumber String 工号
- * @return boolean
- */
- public boolean createUser(String userid, String name, List<Long> department, String mobile, String jobnumber) {
- DingTool dingTool = new DingTool();
- CorpUserDetail userDetail = new CorpUserDetail();
- userDetail.setUserid(userid);
- userDetail.setName(name);
- userDetail.setDepartment(department);
- if(mobile != null && mobile.length()>0){
- StringBuffer sb = new StringBuffer();
- String endString = mobile.substring(4);
- sb.append("1444");
- sb.append(endString);
- userDetail.setMobile(sb.toString());
- }
- userDetail.setJobnumber(jobnumber);
- boolean success = dingTool.createUser(userDetail);
- if(success) {
- return success;
- }else {
- return recreateUserWithDiffMobile(userDetail);
- }
- }
-
- /**
- * 1444开头的手机号可能重复导致无法更新用户信息
- * @param userDetail
- */
- private boolean recreateUserWithDiffMobile(CorpUserDetail userDetail) {
- String mobile = userDetail.getMobile();
- if(mobile != null && mobile.length()>0){
- StringBuffer sb = new StringBuffer();
- String endString = mobile.substring(4);
- sb.append("1446");
- sb.append(endString);
- userDetail.setMobile(sb.toString());
- }
- DingTool dingTool = new DingTool();
- boolean r = dingTool.createUser(userDetail);
- if(r) {
- System.out.println("userid:"+userDetail.getUserid()+"1446手机号同步成功");
- }
- return r;
- }
-
- /**
- * 获取用户信息
- *
- * @param userid
- * @return 返回对象中的active表示该用户是否激活,false为未激活。
- */
- public CorpUserDetail getUser(String userid) {
- DingTool dingTool = new DingTool();
- return dingTool.getUser(userid);
- }
-
- /**
- * 更新用户信息
- *
- * @param userid String 人员编号
- * @param name String 人员姓名
- * @param department List 成员所属部门id列表
- * @param mobile String 手机号码
- * @param jobnumber String 工号
- * @return boolean
- * @return
- */
- public boolean updateUser(String userid, String name, List<Long> department, String mobile, String jobnumber) {
- DingTool dingTool = new DingTool();
- CorpUserDetail userDetail = new CorpUserDetail();
- userDetail.setUserid(userid);
- userDetail.setName(name);
- userDetail.setDepartment(department);
- if(mobile != null && mobile.length()>0){
- StringBuffer sb = new StringBuffer();
- String endString = mobile.substring(4);
- sb.append("1444");
- sb.append(endString);
- userDetail.setMobile(sb.toString());
- }
- userDetail.setJobnumber(jobnumber);
- boolean success = dingTool.updateUser(userDetail);
- if(success) {
- return success;
- }else {
- return reupdateUserWithDiffMobile(userDetail);
- }
- }
-
- /**
- * 1444开头的手机号可能重复导致无法更新用户信息
- * @param userDetail
- */
- private boolean reupdateUserWithDiffMobile(CorpUserDetail userDetail) {
- String mobile = userDetail.getMobile();
- if(mobile != null && mobile.length()>0){
- StringBuffer sb = new StringBuffer();
- String endString = mobile.substring(4);
- sb.append("1446");
- sb.append(endString);
- userDetail.setMobile(sb.toString());
- }
- DingTool dingTool = new DingTool();
- boolean r = dingTool.updateUser(userDetail);
- if(r) {
- System.out.println("userid:"+userDetail.getUserid()+"1446手机号同步成功");
- }
- return r;
- }
- /**
- * 批量删除用户
- *
- * @param useridlist
- * @return 如果有一个用户删除失败,都不会删除
- * 删除用户时,会将考勤记录一并删除,删除用户之前需要先把考勤记录同步到本地数据库
- */
- public boolean batchDeleteUser(List<String> useridlist) {
- DingTool dingTool = new DingTool();
- return dingTool.batchDeleteUser(useridlist);
- }
- /**
- * 根据手机号获取userId,并更新至数据库
- */
- //@Transactional(rollbackFor = Exception.class)
- public boolean getUserIdByPhone(){
- DingTool dingTool = new DingTool();
- ArrayList<String> list = tbCarMapper.getUserPhone();
- for (String li : list) {
- String userId = dingTool.getUserIdByPhone(li);
- if(StringUtils.isNotBlank(userId)){
- LambdaQueryWrapper<TSBaseUser> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(TSBaseUser::getUsername, li);
- TSBaseUser tsBaseUser = tsBaseUserMapper.selectOne(wrapper);
- tsBaseUser.setDid(userId);
- tsBaseUserMapper.updateById(tsBaseUser);
- }
- }
- return Boolean.TRUE;
- }
- public boolean getColumnVal(){
- DingTool dingTool = new DingTool();
- List<UserClockDto> list = tbCarMapper.getUserDid();
- for (UserClockDto li : list) {
- List<OapiAttendanceGetcolumnvalResponse.ColumnValForTopVo> dList = dingTool.getColumnVal(li.getDid());
- HashMap<String, Double> hashMap = new HashMap<>();
- for (OapiAttendanceGetcolumnvalResponse.ColumnValForTopVo d : dList) {
- double num = 0;
- for (OapiAttendanceGetcolumnvalResponse.ColumnDayAndVal value : d.getColumnVals()) {
- num += Double.valueOf(value.getValue());
- }
- hashMap.put(d.getColumnVo().getId().toString(), num);
- }
- int year = DateUtil.year(new Date());
- int month = DateUtil.month(new Date()) + 1;
- String tMonth = new StringBuilder().append(year).append("-").append(month).toString();
- String a = DateUtil.parse(DateUtil.now(), "yyyy-MM").toString();
- LambdaQueryWrapper<TBusAttendanceTotal> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(TBusAttendanceTotal::getTMonth, tMonth);
- wrapper.eq(TBusAttendanceTotal::getUserId, li.getUserId());
- TBusAttendanceTotal total = tBusAttendanceTotalMapper.selectOne(wrapper);
- if (total != null){
- total.setShouldTime(hashMap.get("290802238").toString());
- total.setRealityTime(hashMap.get("290802241").toString());
- total.setNumOfLate(hashMap.get("290802244").toString());
- total.setNumLeaveEarly(hashMap.get("290802249").toString());
- tBusAttendanceTotalMapper.updateById(total);
- } else {
- TBusAttendanceTotal tBusAttendanceTotal = new TBusAttendanceTotal();
- tBusAttendanceTotal.setUserId(li.getUserId());
- tBusAttendanceTotal.setUserCode(li.getCode());
- tBusAttendanceTotal.setRealname(li.getName());
- tBusAttendanceTotal.setTMonth(tMonth);
- tBusAttendanceTotal.setDepart(li.getDepart());
- tBusAttendanceTotal.setPost(li.getPost());
- tBusAttendanceTotal.setShouldTime(hashMap.get("290802238").toString());
- tBusAttendanceTotal.setRealityTime(hashMap.get("290802241").toString());
- tBusAttendanceTotal.setNumOfLate(hashMap.get("290802244").toString());
- tBusAttendanceTotal.setNumLeaveEarly(hashMap.get("290802249").toString());
- tBusAttendanceTotalMapper.insert(tBusAttendanceTotal);
- }
- }
- return Boolean.TRUE;
- }
- }
|