|
|
|
|
@ -28,8 +28,12 @@ package org.springblade.desk.dashboard.service.impl; |
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
|
|
|
|
import jakarta.annotation.Resource; |
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
import org.springblade.core.log.exception.ServiceException; |
|
|
|
|
import org.springblade.core.tool.utils.Func; |
|
|
|
|
import org.springblade.desk.basic.pojo.entity.BasicClazz; |
|
|
|
|
import org.springblade.desk.basic.service.IBasicClazzService; |
|
|
|
|
import org.springblade.desk.dashboard.pojo.entity.*; |
|
|
|
|
import org.springblade.desk.dashboard.pojo.vo.DsModelAndDetailVO; |
|
|
|
|
import org.springblade.desk.dashboard.pojo.vo.DsProDetailVO; |
|
|
|
|
@ -38,7 +42,9 @@ import org.springblade.desk.dashboard.pojo.vo.DsProModelVO; |
|
|
|
|
import org.springblade.desk.dashboard.excel.DsProModelExcel; |
|
|
|
|
import org.springblade.desk.dashboard.mapper.DsProModelMapper; |
|
|
|
|
import org.springblade.desk.dashboard.service.*; |
|
|
|
|
import org.springblade.desk.logistics.pojo.vo.TaskVO; |
|
|
|
|
import org.springblade.system.feign.IUserClient; |
|
|
|
|
import org.springblade.system.pojo.entity.User; |
|
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
@ -56,12 +62,10 @@ import java.util.stream.Collectors; |
|
|
|
|
* @author BladeX |
|
|
|
|
* @since 2025-11-12 |
|
|
|
|
*/ |
|
|
|
|
@Slf4j |
|
|
|
|
@Service |
|
|
|
|
public class DsProModelServiceImpl extends BaseServiceImpl<DsProModelMapper, DsProModelEntity> implements IDsProModelService { |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
IBsPlatingTypeService platingTypeService; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
DsProModelMapper proModelMapper; |
|
|
|
|
|
|
|
|
|
@ -77,22 +81,90 @@ public class DsProModelServiceImpl extends BaseServiceImpl<DsProModelMapper, DsP |
|
|
|
|
@Autowired |
|
|
|
|
IUserClient userClient; |
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
private IBasicClazzService basicClazzService; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public IPage<DsProModelVO> selectDsProModelPage(IPage<DsProModelVO> page, DsProModelVO dsProModel) { |
|
|
|
|
List<DsProModelVO> DsProModelVO = baseMapper.selectDsProModelPage(page, dsProModel); |
|
|
|
|
for (org.springblade.desk.dashboard.pojo.vo.DsProModelVO dsProModelVO : DsProModelVO) { |
|
|
|
|
if(null != dsProModelVO.getPlatingType()){ |
|
|
|
|
BsPlatingTypeEntity platingTypeEntity = platingTypeService.getById(dsProModelVO.getPlatingType()); |
|
|
|
|
dsProModelVO.setPlatingTypeStr(platingTypeEntity.getPlateType()); |
|
|
|
|
List<DsProModelVO> dsProModelVOList = baseMapper.selectDsProModelPage(page, dsProModel); |
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(dsProModelVOList)) { |
|
|
|
|
return page.setRecords(Collections.emptyList()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
dsProModelVO.setUpdateUserStr(userClient.userInfo(Func.toLong(dsProModelVO.getUpdateUser())).getData().getUser().getName()); |
|
|
|
|
// 处理每个VO
|
|
|
|
|
for (DsProModelVO vo : dsProModelVOList) { |
|
|
|
|
if (vo == null) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 设置电镀类型名称 - 防止空指针
|
|
|
|
|
if (vo.getPlatingType() != null) { |
|
|
|
|
try { |
|
|
|
|
BasicClazz basicClazz = basicClazzService.getById(vo.getPlatingType()); |
|
|
|
|
if (basicClazz != null) { |
|
|
|
|
vo.setPlatingTypeStr(basicClazz.getName()); |
|
|
|
|
} |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("查询电镀类型失败, platingType: {}", vo.getPlatingType(), e); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 设置工序数量 - 防止空指针
|
|
|
|
|
if (vo.getId() != null) { |
|
|
|
|
try { |
|
|
|
|
List<DsProDetailEntity> detailList = proDetailService.selectDsProDetailByModelId(vo.getId()); |
|
|
|
|
vo.setProcessNum(detailList == null ? 0L : (long) detailList.size()); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("查询工序数量失败, modelId: {}", vo.getId(), e); |
|
|
|
|
vo.setProcessNum(0L); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
vo.setProcessNum(0L); |
|
|
|
|
} |
|
|
|
|
List<DsProDetailEntity> dsProDetailEntityList = proDetailService.selectDsProDetailByModelId(dsProModelVO.getId()); |
|
|
|
|
dsProModelVO.setProcessNum((long)dsProDetailEntityList.size()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 收集所有需要查询的 userId(去重)
|
|
|
|
|
Set<String> userIdSet = dsProModelVOList.stream() |
|
|
|
|
.map(DsProModelVO::getUpdateUser) |
|
|
|
|
.filter(Objects::nonNull) |
|
|
|
|
.map(String::valueOf) |
|
|
|
|
.collect(Collectors.toSet()); |
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(userIdSet)) { |
|
|
|
|
// 批量查询用户信息
|
|
|
|
|
String userIds = userIdSet.stream() |
|
|
|
|
.map(String::valueOf) |
|
|
|
|
.collect(Collectors.joining(",")); |
|
|
|
|
try { |
|
|
|
|
List<User> userList = userClient.userListByIds(userIds); |
|
|
|
|
if (CollectionUtils.isNotEmpty(userList)) { |
|
|
|
|
Map<Long, User> userMap = userList.stream() |
|
|
|
|
.filter(user -> user != null && user.getId() != null) |
|
|
|
|
.collect(Collectors.toMap( |
|
|
|
|
User::getId, |
|
|
|
|
user -> user, |
|
|
|
|
(existing, replacement) -> existing |
|
|
|
|
)); |
|
|
|
|
|
|
|
|
|
// 批量设置用户名称
|
|
|
|
|
for (DsProModelVO dsProModelVO : dsProModelVOList) { |
|
|
|
|
Long updateUser = dsProModelVO.getUpdateUser(); |
|
|
|
|
if (updateUser != null) { |
|
|
|
|
User user = userMap.get(updateUser); |
|
|
|
|
if (user != null) { |
|
|
|
|
dsProModelVO.setUpdateUserStr(user.getName()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("批量获取用户信息失败, userIds: {}", userIds, e); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return page.setRecords(DsProModelVO); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return page.setRecords(dsProModelVOList); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|