package doumeemes.service.ext.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import doumeemes.biz.system.SystemDictDataBiz; import doumeemes.core.constants.ResponseStatus; import doumeemes.core.exception.BusinessException; import doumeemes.core.model.LoginUserInfo; import doumeemes.core.model.PageData; import doumeemes.core.model.PageWrap; import doumeemes.core.utils.Constants; import doumeemes.core.utils.DateUtil; import doumeemes.core.utils.redis.RedisUtil; import doumeemes.dao.business.model.CategoryUnion; import doumeemes.dao.business.model.CompanyUser; import doumeemes.dao.business.model.WorkorderCheck; import doumeemes.dao.ext.CategoryUnionExtMapper; import doumeemes.dao.ext.CompanyUserExtMapper; import doumeemes.dao.ext.WorkorderCheckExtMapper; import doumeemes.dao.ext.dto.QueryWorkorderCheckExtDTO; import doumeemes.dao.ext.vo.CategoryExtListVO; import doumeemes.dao.ext.vo.DepartmentExtListVO; import doumeemes.dao.ext.vo.WorkorderCheckExtListVO; import doumeemes.dao.ext.vo.WorkorderCheckGroupListVO; import doumeemes.service.ext.CategoryExtService; import doumeemes.service.ext.DepartmentExtService; import doumeemes.service.ext.WorkorderCheckExtService; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 检验信息Service实现 * @author 江蹄蹄 * @date 2022/04/20 10:56 */ @Service public class WorkorderCheckExtServiceImpl implements WorkorderCheckExtService { @Autowired private RedisTemplate redisTemplate; @Autowired private WorkorderCheckExtMapper workorderCheckExtMapper; @Autowired private CompanyUserExtMapper companyUserExtMapper; @Autowired private CategoryExtService categoryExtService; @Autowired private CategoryUnionExtMapper categoryUnionExtMapper; @Autowired private DepartmentExtService departmentExtService; @Autowired private SystemDictDataBiz systemDictDataBiz; @Override public PageData findPage(PageWrap pageWrap) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,您无权限进行该操作!"); } //只能查看当前根组织的数据 pageWrap.getModel().setDeleted(Constants.ZERO); pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId()); // if(!Constants.equalsInteger(user.getCurComDepartment().getId(),user.getRootDepartment().getId())){ //如果当前选择的公司级组织非根组织信息,只能查看当前选择公司级组织数据 pageWrap.getModel().setDepartId(user.getCurComDepartment().getId()); // } //数据权限 List dataPermission = user.getDepartPermissionList(); if(dataPermission!=null){ // pageWrap.getModel().setPmodelUserId(user.getId()); pageWrap.getModel().setDepartIds(dataPermission); pageWrap.getModel().setCreateUser(user.getId()); /* if(dataPermission.size() == 0){ //只能看自己的 pageWrap.getModel().setPmodelUserId(user.getId()); }else{ //否则走数据权限 pageWrap.getModel().setDepartIds(dataPermission); }*/ } List procedureIds=user.getProcedureIds();//权限范围内工序 if(procedureIds!=null){ if(procedureIds.size()>0){ pageWrap.getModel().setProcedureIds(procedureIds); } } PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity()); pageWrap.getModel().setDeleted(Constants.ZERO); List result = workorderCheckExtMapper.selectListNew(pageWrap.getModel()); if(result.size()>0){ List allDepartList = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_DEPART_LIST_KEY+user.getCompany().getId(),ArrayList.class); for(int i=0;i(result)); } private void initCheckUser(LoginUserInfo user, WorkorderCheckExtListVO data, List allDepartList) { if(data.getCheckUserId() ==null){ return; } CompanyUser query=new CompanyUser(); query.setUserId(data.getCheckUserId()); query.setDeleted(Constants.ZERO); query.setRootDepartId(user.getRootDepartment().getId()); CompanyUser comp= companyUserExtMapper.selectOne(new QueryWrapper<>(query)); if(comp!=null){ DepartmentExtListVO d = departmentExtService.getModelById(user.getCompany().getId(),comp.getDepartmentId(),allDepartList); String dName =d==null?"":StringUtils.defaultString(d.getName(),""); data.setCheckUserDepartName(dName); } } private void initProuserIds(LoginUserInfo user, WorkorderCheckExtListVO data, List allDepartList) { if(StringUtils.isNotEmpty(data.getProUserids())){ String[] str=data.getProUserids().split(","); for(String id:str){ id = StringUtils.strip(id,"[]"); CompanyUser query=new CompanyUser(); query.setUserId(Integer.valueOf(id)); Integer rootDepartId=data.getRootDepartId(); query.setRootDepartId(rootDepartId); CompanyUser comp= companyUserExtMapper.selectOne(new QueryWrapper<>(query).last(" limit 1")); if(comp!=null){ DepartmentExtListVO d = departmentExtService.getModelById(user.getCompany().getId(),comp.getDepartmentId(),allDepartList); String dName =d==null?"":StringUtils.defaultString(d.getName(),""); data.setProUserids(comp.getName()+"-"+dName); } } } } @Override public WorkorderCheckExtListVO findDetailById(Integer tid){ LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,您无权限进行该操作!"); } QueryWorkorderCheckExtDTO pageWrap = new QueryWorkorderCheckExtDTO(); pageWrap.setId(tid); //只能查看当前根组织的数据 pageWrap.setDeleted(Constants.ZERO); List result = workorderCheckExtMapper.selectListNew(pageWrap); WorkorderCheckExtListVO data = null; if(result != null && result.size()>0){ data=result.get(0); List allDepartList = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_DEPART_LIST_KEY+user.getCompany().getId(),ArrayList.class); initProuserIds(user,data,allDepartList); initCheckUser(user,data,allDepartList); initCheckInfo(data,user); } return data; } private void initCheckInfo(WorkorderCheckExtListVO data, LoginUserInfo user) { if(StringUtils.isNotBlank(data.getCheckInfo())){ try { List clist = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_CATEGORY_KEY+user.getCompany().getId(),ArrayList.class); CategoryUnion uModel = categoryUnionExtMapper.selectById(Integer.parseInt(data.getCheckInfo())); if(uModel!= null ){ String cnamge = getCatenameById(user,uModel.getCateBigId(),clist)+ getCatenameById(user,uModel.getCateMiddleId(),clist)+ getCatenameById(user,uModel.getCateSmallId(),clist); data.setCheckInfo(cnamge); } }catch (Exception e){ } } } private String getCatenameById(LoginUserInfo user, Integer cateId, List clist) { if(cateId!=null){ CategoryExtListVO bc = categoryExtService.getByCategoryId(user.getCompany().getId(),cateId,clist); if(bc!=null){ return StringUtils.defaultString(bc.getName(),""); } } return ""; } @Override public List listGroupByAppliance(QueryWorkorderCheckExtDTO pageWrap){ LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,您无权限进行该操作!"); } if(pageWrap.getWorkorderId() == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请求参数不正确!"); } WorkorderCheck cParam = new WorkorderCheck(); cParam.setWorkorderId(pageWrap.getWorkorderId()); cParam.setDeleted(Constants.ZERO); //查询工单全部检验记录 List checkList = workorderCheckExtMapper.selectGroupList(cParam); List result = new ArrayList<>(); Integer scrapId = systemDictDataBiz.queryByCode(Constants.SYSTEM_APPLIANCE_TYPE,Constants.APPLIANCES_TYPE_LABLE.scrap).getId(); if(checkList !=null){ for(WorkorderCheck c : checkList){ if( Constants.formatIntegerNum(c.getUnqualifiedNum())>0){ WorkorderCheckGroupListVO tModel = new WorkorderCheckGroupListVO(); tModel.setId(c.getQualifiedApplianceId()); tModel.setCode(c.getQualifiedApplianceCode()); tModel.setMaterialName(c.getMaterialName()); tModel.setNum(c.getUnqualifiedNum()); if(Constants.equalsInteger(c.getDoneType(),scrapId)){ //如果是报废品 tModel.setType(Constants.ONE); }else { //如果是不良品 tModel.setType(Constants.ZERO); } result.add(tModel); } } } return result; } @Override public synchronized String getNextCode(Integer comId ){ String prefix = DateUtil.getDate(new Date(),"yyyyMMdd") +"-"; Integer countNum = RedisUtil.getObject(redisTemplate, Constants.RedisKeys.COM_CHECK_CODE_KEY+comId,Integer.class); countNum = Constants.formatIntegerNum(countNum)+1; //更新缓存 RedisUtil.addObject(redisTemplate,Constants.RedisKeys.COM_CHECK_CODE_KEY+comId,countNum); String nextIndex =Integer.toString( countNum); return prefix + StringUtils.leftPad(nextIndex,4,"0"); } }