diff --git a/src/main/java/com/zteits/oa/api/dto/asradaily/param/AsraDailyForTotalNumAndDetailReq.java b/src/main/java/com/zteits/oa/api/dto/asradaily/param/AsraDailyForTotalNumAndDetailReq.java index 61dfdc4..9858168 100644 --- a/src/main/java/com/zteits/oa/api/dto/asradaily/param/AsraDailyForTotalNumAndDetailReq.java +++ b/src/main/java/com/zteits/oa/api/dto/asradaily/param/AsraDailyForTotalNumAndDetailReq.java @@ -1,5 +1,7 @@ package com.zteits.oa.api.dto.asradaily.param; +import java.util.List; + import com.zteits.oa.api.base.bean.BaseRequest; /** @@ -33,7 +35,19 @@ public class AsraDailyForTotalNumAndDetailReq extends BaseRequest{ /**员工名称.*/ private String opName; + /**父级ID 顶级为-1.*/ + private List opIds; + + + + public List getOpIds() { + return opIds; + } + + public void setOpIds(List opIds) { + this.opIds = opIds; + } public String getBeginTime() { return beginTime; diff --git a/src/main/java/com/zteits/oa/api/dto/asradaily/param/AsraDailySaveOrUpdateReq.java b/src/main/java/com/zteits/oa/api/dto/asradaily/param/AsraDailySaveOrUpdateReq.java index 89fdf41..698be2e 100644 --- a/src/main/java/com/zteits/oa/api/dto/asradaily/param/AsraDailySaveOrUpdateReq.java +++ b/src/main/java/com/zteits/oa/api/dto/asradaily/param/AsraDailySaveOrUpdateReq.java @@ -3,6 +3,7 @@ package com.zteits.oa.api.dto.asradaily.param; import com.zteits.oa.api.base.bean.BaiscDTO; import java.util.Date; +import java.util.List; public class AsraDailySaveOrUpdateReq extends BaiscDTO{ /**主键*/ @@ -52,8 +53,21 @@ public class AsraDailySaveOrUpdateReq extends BaiscDTO{ /**工时内容*/ private String dailyContent; + + /**员工ids.*/ + private List opIds; + + - /**获取主键*/ + public List getOpIds() { + return opIds; + } + + public void setOpIds(List opIds) { + this.opIds = opIds; + } + + /**获取主键*/ public Long getId() { return id; } diff --git a/src/main/java/com/zteits/oa/api/dto/asraop/param/AsraOpQueryReq.java b/src/main/java/com/zteits/oa/api/dto/asraop/param/AsraOpQueryReq.java index 71cafef..49d80f9 100644 --- a/src/main/java/com/zteits/oa/api/dto/asraop/param/AsraOpQueryReq.java +++ b/src/main/java/com/zteits/oa/api/dto/asraop/param/AsraOpQueryReq.java @@ -25,7 +25,12 @@ public class AsraOpQueryReq extends BaseRequest{ /**员工邮箱*/ private String email; - + + /**父级ID 顶级为-1*/ + private Long parentId; + + + /**员工idlist*/ private List opIdLists; @@ -41,12 +46,12 @@ public class AsraOpQueryReq extends BaseRequest{ this.opParentIdLists = opParentIdLists; } - public List getOpIdLists() { - return opIdLists; + public Long getParentId() { + return parentId; } - public void setOpIdLists(List opIdLists) { - this.opIdLists = opIdLists; + public void setParentId(Long parentId) { + this.parentId = parentId; } public String getLoginCode() { diff --git a/src/main/java/com/zteits/oa/api/service/report/query/AsraOpQueryService.java b/src/main/java/com/zteits/oa/api/service/report/query/AsraOpQueryService.java index f568f74..5ef5247 100644 --- a/src/main/java/com/zteits/oa/api/service/report/query/AsraOpQueryService.java +++ b/src/main/java/com/zteits/oa/api/service/report/query/AsraOpQueryService.java @@ -1,5 +1,7 @@ package com.zteits.oa.api.service.report.query; +import java.util.List; + import com.zteits.oa.api.base.bean.BizResult; import com.zteits.oa.api.base.bean.PageBean; import com.zteits.oa.api.dto.asraop.AsraOpDTO; @@ -50,4 +52,12 @@ public interface AsraOpQueryService { * */ BizResult queryAsraOpByLoginCode(AsraOpQueryReq asraOpQueryReq); + + /** + * 通过员工父级Id获取员工信息.
+ * @param asraOpQueryRe + * @return + * 2018年7月31日 wangfs.
+ */ + BizResult> queryAsraOpByParentId(AsraOpQueryReq asraOpQueryRe); } diff --git a/src/main/java/com/zteits/oa/report/biz/AsraOpQueryServiceImpl.java b/src/main/java/com/zteits/oa/report/biz/AsraOpQueryServiceImpl.java index 4016882..f522de4 100644 --- a/src/main/java/com/zteits/oa/report/biz/AsraOpQueryServiceImpl.java +++ b/src/main/java/com/zteits/oa/report/biz/AsraOpQueryServiceImpl.java @@ -1,5 +1,8 @@ package com.zteits.oa.report.biz; +import java.util.ArrayList; +import java.util.List; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; @@ -15,6 +18,7 @@ import com.zteits.oa.api.dto.asraop.param.AsraOpQueryReq; import com.zteits.oa.api.service.report.query.AsraOpQueryService; import com.zteits.oa.report.dao.AsraOpDao; import com.zteits.oa.report.domain.AsraOp; +import com.zteits.oa.util.ListCopyUtil; import com.zteits.oa.util.pagepaper.PageBeanUtil; /** * 工时系统操作员实现类.
@@ -31,7 +35,7 @@ import com.zteits.oa.util.pagepaper.PageBeanUtil; *---------------------------------------------------------* * 2018年7月30日 wangfs v1.0.0 创建 */ -@Service("") +@Service("com.zteits.oa.report.biz.AsraOpQueryServiceImpl") public class AsraOpQueryServiceImpl implements AsraOpQueryService { private static final Logger logger = LoggerFactory.getLogger(AsraOpQueryServiceImpl.class); @@ -77,4 +81,18 @@ public class AsraOpQueryServiceImpl implements AsraOpQueryService { return new BizResult<>(asraOpDTO); } + /** + * 通过员工父级Id获取员工信息.
+ * @param asraOpQueryRe + * @return + * 2018年7月31日 wangfs.
+ */ + @Override + public BizResult> queryAsraOpByParentId(AsraOpQueryReq asraOpQueryRe) { + List listDTO = new ArrayList<>(); + List list = asraOpDao.queryAsraOpByParentId(asraOpQueryRe); + ListCopyUtil.listCopyProperties(list, listDTO, AsraOpDTO.class); + return new BizResult>(listDTO); + } + } diff --git a/src/main/java/com/zteits/oa/report/dao/AsraOpDao.java b/src/main/java/com/zteits/oa/report/dao/AsraOpDao.java index d35da7c..b64699d 100644 --- a/src/main/java/com/zteits/oa/report/dao/AsraOpDao.java +++ b/src/main/java/com/zteits/oa/report/dao/AsraOpDao.java @@ -1,5 +1,7 @@ package com.zteits.oa.report.dao; +import java.util.List; + import com.github.pagehelper.PageInfo; import com.zteits.oa.api.base.bean.BizResult; import com.zteits.oa.api.dto.asraop.AsraOpDTO; @@ -33,4 +35,12 @@ public interface AsraOpDao { * */ AsraOp queryAsraOpByLoginCode(String loginCode); + + /** + * 通过员工父级Id获取员工信息.
+ * @param asraOpQueryRe + * @return + * 2018年7月31日 wangfs.
+ */ + List queryAsraOpByParentId(AsraOpQueryReq asraOpQueryRe); } diff --git a/src/main/java/com/zteits/oa/report/dao/impl/AsraDailyDaoImpl.java b/src/main/java/com/zteits/oa/report/dao/impl/AsraDailyDaoImpl.java index a59324d..2d3a165 100644 --- a/src/main/java/com/zteits/oa/report/dao/impl/AsraDailyDaoImpl.java +++ b/src/main/java/com/zteits/oa/report/dao/impl/AsraDailyDaoImpl.java @@ -68,8 +68,13 @@ public class AsraDailyDaoImpl implements AsraDailyDao{ public AsraDailyOpNumForCurrentDayDO queryAsraDailyOpNumForCurrentDay(AsraDailyForTotalNumAndDetailReq request) { AsraDailyOpNumForCurrentDayDO asraDailyOpNumForCurrentDayDO = new AsraDailyOpNumForCurrentDayDO(); List opList = new ArrayList<>(); + + //1.总人数获取 int employeeTotal = 0; - opList.add(request.getOpId());//查询自己id + if(CollectionUtil.isNotEmpty(request.getOpIds())){ + employeeTotal = request.getOpIds().size(); + } + //2.查询今日日报填写人数 AsraDailyExample exampleTwo = new AsraDailyExample(); exampleTwo.createCriteria().andAsarOpIdIn(opList) diff --git a/src/main/java/com/zteits/oa/report/dao/impl/AsraOpDaoImpl.java b/src/main/java/com/zteits/oa/report/dao/impl/AsraOpDaoImpl.java index 6eb6347..0b5a4af 100644 --- a/src/main/java/com/zteits/oa/report/dao/impl/AsraOpDaoImpl.java +++ b/src/main/java/com/zteits/oa/report/dao/impl/AsraOpDaoImpl.java @@ -60,6 +60,7 @@ public class AsraOpDaoImpl implements AsraOpDao { if(asraOpQueryRe.getId() != null){ criteria.andIdEqualTo(asraOpQueryRe.getId()); } + criteria.andDataStateEqualTo(1); List list = asraOpMapper.selectByExample(example); return CollectionUtils.isEmpty(list) ? new AsraOp() : list.get(0); @@ -73,4 +74,18 @@ public class AsraOpDaoImpl implements AsraOpDao { return berths.get(0); } + /** + * 通过员工父级Id获取员工信息.
+ * @param asraOpQueryRe + * @return + * 2018年7月31日 wangfs.
+ */ + @Override + public List queryAsraOpByParentId(AsraOpQueryReq asraOpQueryRe) { + AsraOpExample example = new AsraOpExample(); + example.createCriteria().andParentIdEqualTo(asraOpQueryRe.getParentId()); + List list = asraOpMapper.selectByExample(example); + return list; + } + } diff --git a/src/main/java/com/zteits/oa/report/web/AsraDailyController.java b/src/main/java/com/zteits/oa/report/web/AsraDailyController.java index 6e4088b..0e2fd5a 100644 --- a/src/main/java/com/zteits/oa/report/web/AsraDailyController.java +++ b/src/main/java/com/zteits/oa/report/web/AsraDailyController.java @@ -17,6 +17,7 @@ import com.zteits.oa.api.dto.asradaily.param.AsraDailyQueryReq; import com.zteits.oa.api.dto.asradaily.param.AsraDailySaveOrUpdateReq; import com.zteits.oa.api.dto.asraop.AsraOpDTO; import com.zteits.oa.api.service.report.query.AsraDailyQueryService; +import com.zteits.oa.report.domain.AsraDaily; import com.zteits.oa.util.pagepaper.DateForObjectUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -72,7 +73,7 @@ public class AsraDailyController { if(asraOpDTO == null ){ throw new BizException(ErrorType.PARAMM_NULL,"获取session为空"); } - request.setOpId(asraOpDTO.getId()); + request.setOpIds(asraOpDTO.getOpIds()); BizResult result = asraDailyQueryService.queryAsraDailyOpNumForCurrentDay(request); logger.info("--end工时查询-当天填报人数统计(汇总),结果={}",JSONObject.toJSON(result)); return result; @@ -93,7 +94,7 @@ public class AsraDailyController { if(asraOpDTO == null ){ throw new BizException(ErrorType.PARAMM_NULL,"获取session为空"); } - request.setOpId(asraOpDTO.getId()); + request.setOpIds(asraOpDTO.getOpIds()); BizResult result = asraDailyQueryService.queryAsraDailyAllForList(request); logger.info("--end工时查询-所有员工及自己或者自己日报,结果={}",JSONObject.toJSON(result)); return result; diff --git a/src/main/java/com/zteits/oa/report/web/OAuthController.java b/src/main/java/com/zteits/oa/report/web/OAuthController.java index 8e0d21a..00a9196 100644 --- a/src/main/java/com/zteits/oa/report/web/OAuthController.java +++ b/src/main/java/com/zteits/oa/report/web/OAuthController.java @@ -1,5 +1,7 @@ package com.zteits.oa.report.web; +import static org.mockito.Matchers.contains; + import java.util.ArrayList; import java.util.List; @@ -18,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; +import com.xiaoleilu.hutool.util.CollectionUtil; import com.zteits.oa.api.base.bean.BizResult; import com.zteits.oa.api.base.constants.ErrorType; import com.zteits.oa.api.base.constants.SessionEnum; @@ -97,7 +100,7 @@ public class OAuthController { List opParentIds = new ArrayList<>(); opParentIds.add(asraOpDTO.getId()); /**递归查询员工ids.*/ - opIds = queryOpTreeByOpId(opParentIds,opIds); + opIds = queryOpTreeByOpIds(opParentIds,opIds); logger.info("---获取到的opIds={}",JSONObject.toJSON(opIds)); asraOpDTO.setOpIds(opIds); HttpSession session = request.getSession(); @@ -144,7 +147,7 @@ public class OAuthController { * @return * 2018年8月2日 wangfs.
*/ - private List queryOpTreeByOpId(List queryOpList,List opList){ + private List queryOpTreeByOpIds(List queryOpList,List opList){ if(queryOpList != null && CollectionUtil.isNotEmpty(queryOpList)){ AsraOpQueryReq asraOpQueryRe = new AsraOpQueryReq(); asraOpQueryRe.setOpParentIdLists(queryOpList); @@ -167,6 +170,90 @@ public class OAuthController { } + /** + * 递归查询员工id.
+ * @param parentOpId + * @param opList + * @return + * 2018年8月2日 wangfs.
+ */ + private List queryOpTreeByOpId(Long opId){ + List rootAllList = new ArrayList<>(); + rootAllList.add(opId); + //1.查找第一级下的所有用户 + List rootOpIds = this.getRootOpIds(opId); + + //2.查找第二级以下所有用户 + if(CollectionUtil.isNotEmpty(rootOpIds)){ + rootAllList.addAll(rootOpIds); + for(Long getOpId:rootOpIds ){ + List childOpIds = new ArrayList<>(); + this.getChildOpIds(getOpId,childOpIds); + rootAllList.addAll(childOpIds); + } + + } + return rootAllList; + } + + /** + * 递归查找一级以下的用户 + * @param parentId + * @return + * 2018年8月2日 wangfs.
+ */ + private List getChildOpIds(Long parentId,List childOpIds){ + AsraOpQueryReq asraOpQueryRe = new AsraOpQueryReq(); + asraOpQueryRe.setParentId(parentId); + BizResult> asraOpReult = asraOpQueryService.queryAsraOpByParentId(asraOpQueryRe); + if(asraOpReult != null && CollectionUtil.isNotEmpty(asraOpReult.getData())){ + List list = asraOpReult.getData(); + for(AsraOpDTO asraOpDTO :list){ + if(asraOpDTO == null){ + continue; + } + childOpIds.add(asraOpDTO.getId()); + } + + //遍历下一级 + if(CollectionUtil.isNotEmpty(childOpIds)){ + for(Long opId:childOpIds){ + if(opId != null && !opId.equals(parentId)){ + getChildOpIds(opId,childOpIds); + } + break; + + } + + } + } + + return childOpIds; + } + + /** + * 查找登陆用户下一级用户 + * @param opId + * @param opList + * @return + * 2018年8月2日 wangfs.
+ */ + private List getRootOpIds(Long parentId){ + List opList = new ArrayList<>(); + AsraOpQueryReq asraOpQueryRe = new AsraOpQueryReq(); + asraOpQueryRe.setParentId(parentId); + BizResult> asraOpReult = asraOpQueryService.queryAsraOpByParentId(asraOpQueryRe); + if(asraOpReult != null && CollectionUtil.isNotEmpty(asraOpReult.getData())){ + List list = asraOpReult.getData(); + for(AsraOpDTO asraOpDTO :list){ + if(asraOpDTO == null){ + continue; + } + opList.add(asraOpDTO.getId()); + } + } + return opList; + }