package com.doumee.service.business.impl; import com.alibaba.druid.sql.visitor.functions.Concat; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.LoginUserModel; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.Utils; import com.doumee.dao.business.*; import com.doumee.dao.business.model.*; import com.doumee.dao.business.vo.MonthDataResponse; import com.doumee.dao.business.vo.WorkDeskDataResponse; import com.doumee.dao.system.join.NoticesJoinMapper; import com.doumee.dao.system.model.Notices; import com.doumee.dao.system.model.SystemUser; import com.doumee.service.business.WorkbenchesService; import com.github.xiaoymin.knife4j.core.util.CollectionUtils; import com.github.yulichang.wrapper.MPJLambdaWrapper; import io.swagger.models.auth.In; import org.apache.tomcat.util.bcel.classfile.Constant; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** * 审批模版配置信息表Service实现 * @author 江蹄蹄 * @date 2023/12/28 11:46 */ @Service public class WorkbenchesServiceImpl implements WorkbenchesService { @Autowired private YwQuickModelMapper ywQuickModelMapper; @Autowired private YwWorkorderMapper ywWorkorderMapper; @Autowired private NoticesJoinMapper noticesJoinMapper; @Autowired private YwPatrolTaskMapper ywPatrolTaskMapper; @Autowired private YwStocktakingMapper ywStocktakingMapper; @Autowired private SystemDictDataBiz systemDictDataBiz; @Override public List getYwQuickList(LoginUserInfo loginUserInfo){ List ywQuickModelList = ywQuickModelMapper.selectList(new QueryWrapper().lambda() .eq(YwQuickModel::getIsdeleted, Constants.ZERO) .isNull(YwQuickModel::getUserId) .orderByAsc(YwQuickModel::getSort) ); if(Objects.nonNull(loginUserInfo)){ List userModelList = ywQuickModelMapper.selectList(new QueryWrapper().lambda() .eq(YwQuickModel::getIsdeleted, Constants.ZERO) .eq(YwQuickModel::getUserId,loginUserInfo.getId()) .orderByAsc(YwQuickModel::getSort) ); if(CollectionUtils.isNotEmpty(userModelList)){ ywQuickModelList = userModelList; } } String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +systemDictDataBiz.queryByCode(Constants.FTP,Constants.YW_QUICK_MODEL).getCode(); for (YwQuickModel ywQuickModel:ywQuickModelList) { ywQuickModel.setIcoPath(path + ywQuickModel.getIcoPath()); } return ywQuickModelList; } @Override public void updMyYwQuickModel(List idList, LoginUserInfo loginUserInfo){ List ywQuickModelList = ywQuickModelMapper.selectList(new QueryWrapper().lambda() .eq(YwQuickModel::getIsdeleted, Constants.ZERO) .isNull(YwQuickModel::getUserId) .orderByAsc(YwQuickModel::getSort) ); if(CollectionUtils.isEmpty(ywQuickModelList) ){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"快捷模块配置异常,请联系管理员"); } ywQuickModelMapper.delete(new QueryWrapper().lambda().eq(YwQuickModel::getUserId,loginUserInfo.getId())); List newList = new ArrayList<>(); for (int i = 0; i < idList.size(); i++) { Integer id = idList.get(i); List ywQuickModels = ywQuickModelList.stream().filter(j->Constants.equalsInteger(j.getId(),id)).collect(Collectors.toList()); if(CollectionUtils.isEmpty(ywQuickModels)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"快捷模块配置异常,请联系管理员"); } YwQuickModel ywQuickModel = ywQuickModels.get(Constants.ZERO); ywQuickModel.setId(null); ywQuickModel.setCreator(loginUserInfo.getId()); ywQuickModel.setCreateDate(new Date()); ywQuickModel.setSort(i+1); ywQuickModel.setUserId(loginUserInfo.getId()); newList.add(ywQuickModel); } ywQuickModelMapper.insert(newList); } @Override public List getMonthNotices(String yearMonth, LoginUserInfo loginUserInfo){ List dataList = DateUtil.getDayByMonth(yearMonth); List monthDataResponseList = new ArrayList<>(); List noticesList = noticesJoinMapper.selectList(new QueryWrapper().lambda() .eq(Notices::getUserId,loginUserInfo.getId()) .eq(Notices::getIsdeleted,Constants.ZERO) .eq(Notices::getStatus,Constants.ZERO) .like(Notices::getParam1,yearMonth) .ne(Notices::getObjType,Constants.TWO) ); for (String str:dataList) { MonthDataResponse monthDataResponse = new MonthDataResponse(); monthDataResponse.setWeekMsg(DateUtil.getWeek(DateUtil.StringToDate(str,"yyyy-MM-dd")).getChineseName()); monthDataResponse.setMonthDate(str); if(CollectionUtils.isNotEmpty(noticesList)){ monthDataResponse.setNoticeList(noticesList.stream().filter(i->i.getParam1().equals(str)).collect(Collectors.toList())); } monthDataResponseList.add(monthDataResponse); } return monthDataResponseList; } @Override public WorkDeskDataResponse workDeskData(LoginUserInfo loginUserInfo){ WorkDeskDataResponse workDeskDataResponse = new WorkDeskDataResponse(); workDeskDataResponse.setWaitDealWorkOrderSize(Constants.ZERO); workDeskDataResponse.setTimeOutSize(Constants.ZERO); workDeskDataResponse.setStocktakingSize(Constants.ZERO); workDeskDataResponse.setWaitTaskSize(Constants.ZERO); List ywPatrolTaskList = ywPatrolTaskMapper.selectJoinList(YwPatrolTask.class,new MPJLambdaWrapper() .selectAll(YwPatrolTask.class) .selectAs(YwPatrolScheme::getCode,YwPatrolTask::getPlanCode) .selectAs(YwPatrolScheme::getTitle,YwPatrolTask::getPlanTitle) .leftJoin(YwPatrolScheme.class,YwPatrolScheme::getId,YwPatrolTask::getSchemeId) .eq(YwPatrolTask::getIsdeleted, Constants.ZERO) .eq(YwPatrolScheme::getStatus, Constants.ZERO) .in(YwPatrolTask::getStatus, Constants.ZERO, Constants.ONE) .le(YwPatrolTask::getEndDate,DateUtil.getCurrDateTime()) .apply(" find_in_set( "+loginUserInfo.getId()+" , t1.USER_IDS ) ") ); Integer waitTaskSize = ywPatrolTaskList.size(); Integer timeOutSize = Constants.ZERO; if(CollectionUtils.isNotEmpty(ywPatrolTaskList)){ timeOutSize = ywPatrolTaskList.stream().filter(i->(Constants.equalsInteger(i.getStatus(),Constants.ZERO) || Constants.equalsInteger(i.getStatus(),Constants.ONE) ) && i.getEndDate().getTime()().lambda() .eq(YwWorkorder::getIsdeleted, Constants.ZERO) .eq(YwWorkorder::getStatus,Constants.ZERO) .eq(YwWorkorder::getDealStatus,Constants.ONE) .eq(YwWorkorder::getDealUserId,loginUserInfo.getId()) ); long stocktakingSize = ywStocktakingMapper.selectCount(new QueryWrapper().lambda() .eq(YwStocktaking::getIsdeleted,Constants.ZERO) .eq(YwStocktaking::getUserId,loginUserInfo.getId()) .in(YwStocktaking::getStatus, Constants.ZERO, Constants.ONE) ); workDeskDataResponse.setTimeOutSize(timeOutSize); workDeskDataResponse.setWaitTaskSize(waitTaskSize); workDeskDataResponse.setWaitDealWorkOrderSize(waitDealWorkOrderSize); workDeskDataResponse.setStocktakingSize(stocktakingSize); return workDeskDataResponse; } @Override public PageData getMyNotices(PageWrap pageWrap,LoginUserInfo loginUserInfo) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); Notices model = pageWrap.getModel(); Utils.MP.blankToNull(pageWrap.getModel()); queryWrapper.selectAll(Notices.class) .eq(Notices::getUserId,loginUserInfo.getId()) .eq(Notices::getIsdeleted,Constants.ZERO) .eq(Objects.nonNull(model)&&Objects.nonNull(model.getStatus()),Notices::getStatus,model.getStatus()) .apply(" param1 <= CURDATE() ") .orderByAsc(Notices::getReaded) .orderByDesc(Notices::getId); PageData pageData = PageData.from(noticesJoinMapper.selectJoinPage(page,Notices.class, queryWrapper)); return pageData; } }