|
|
@@ -11,24 +11,25 @@ import org.dromara.common.core.utils.StringUtils;
|
|
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
import org.dromara.common.mybatis.utils.WrapperUtils;
|
|
|
+import org.dromara.common.satoken.utils.LoginHelper;
|
|
|
import org.dromara.fulfiller.domain.FlfAnamaly;
|
|
|
import org.dromara.fulfiller.domain.FlfFulfiller;
|
|
|
-import org.dromara.fulfiller.domain.bo.FlfAnamalyAddBo;
|
|
|
-import org.dromara.fulfiller.domain.bo.FlfAnamalyBo;
|
|
|
-import org.dromara.fulfiller.domain.bo.FlfAnamalyPageBo;
|
|
|
+import org.dromara.fulfiller.domain.bo.*;
|
|
|
import org.dromara.fulfiller.domain.vo.FlfAnamalyVo;
|
|
|
import org.dromara.fulfiller.mapper.FlfAnamalyMapper;
|
|
|
import org.dromara.fulfiller.mapper.FlfFulfillerMapper;
|
|
|
import org.dromara.fulfiller.service.IFlfAnamalyService;
|
|
|
import org.dromara.order.api.RemoteSubOrderService;
|
|
|
+import org.dromara.order.api.domain.vo.RemoteSubOrderVo;
|
|
|
import org.dromara.resource.api.RemoteFileService;
|
|
|
import org.dromara.resource.api.domain.RemoteFile;
|
|
|
+import org.dromara.system.api.RemoteUserService;
|
|
|
+import org.dromara.system.api.domain.vo.RemoteUserVo;
|
|
|
+import org.dromara.system.domain.vo.FlfAnamalyOnOrderVo;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
@RequiredArgsConstructor
|
|
|
@@ -41,6 +42,8 @@ public class FlfAnamalyServiceImpl implements IFlfAnamalyService {
|
|
|
private final RemoteSubOrderService remoteSubOrderService;
|
|
|
@DubboReference
|
|
|
private final RemoteFileService remoteFileService;
|
|
|
+ @DubboReference
|
|
|
+ private final RemoteUserService remoteUserService;
|
|
|
|
|
|
@Override
|
|
|
public TableDataInfo<FlfAnamalyVo> list(FlfAnamalyPageBo bo, PageQuery pageQuery) {
|
|
|
@@ -54,36 +57,72 @@ public class FlfAnamalyServiceImpl implements IFlfAnamalyService {
|
|
|
List<Long> fulfillerIds = new ArrayList<>();
|
|
|
flfFulfillerMapper.selectList(Wrappers.lambdaQuery(FlfFulfiller.class).select(FlfFulfiller::getId).like(FlfFulfiller::getName, content))
|
|
|
.forEach(e -> fulfillerIds.add(e.getId()));
|
|
|
- wrapper.in(FlfAnamaly::getId, WrapperUtils.convertIds(fulfillerIds));
|
|
|
List<Long> orderIds = remoteSubOrderService.getIdsByCode(content);
|
|
|
- wrapper.in(FlfAnamaly::getOrderId, WrapperUtils.convertIds(orderIds));
|
|
|
+ wrapper.and(w -> w
|
|
|
+ .in(FlfAnamaly::getFulfiller, WrapperUtils.convertIds(fulfillerIds))
|
|
|
+ .or()
|
|
|
+ .in(FlfAnamaly::getOrderId, WrapperUtils.convertIds(orderIds))
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
Page<FlfAnamalyVo> page = baseMapper.selectVoPage(pageQuery.build(), wrapper);
|
|
|
|
|
|
List<Long> photoIds = new ArrayList<>();
|
|
|
+ List<Long> fulfillerIds = new ArrayList<>();
|
|
|
+ List<Long> orderIds = new ArrayList<>();
|
|
|
+ List<Long> auditorIds = new ArrayList<>();
|
|
|
Map<Long, RemoteFile> photoMap = new HashMap<>();
|
|
|
+ Map<Long, FlfFulfiller> fulfillerMap = new HashMap<>();
|
|
|
+ Map<Long, RemoteSubOrderVo> orderMap = new HashMap<>();
|
|
|
+ Map<Long, RemoteUserVo> auditorMap = new HashMap<>();
|
|
|
page.getRecords().forEach(e -> {
|
|
|
+ fulfillerIds.add(e.getFulfiller());
|
|
|
if (StringUtils.isNotBlank(e.getPhotos())) {
|
|
|
String[] ids = e.getPhotos().split(",");
|
|
|
for (String id : ids) {
|
|
|
photoIds.add(Long.valueOf(id));
|
|
|
}
|
|
|
}
|
|
|
+ orderIds.add(e.getOrderId());
|
|
|
+ auditorIds.add(e.getAuditor());
|
|
|
});
|
|
|
if (!photoIds.isEmpty()) {
|
|
|
remoteFileService.selectByIds(photoIds).forEach(e -> photoMap.put(e.getOssId(), e));
|
|
|
}
|
|
|
+ if (!orderIds.isEmpty()) {
|
|
|
+ remoteSubOrderService.getByIds(orderIds).forEach(e -> orderMap.put(e.getId(), e));
|
|
|
+ }
|
|
|
+ if (!auditorIds.isEmpty()) {
|
|
|
+ remoteUserService.getByIds(auditorIds).forEach(e -> auditorMap.put(e.getUserId(), e));
|
|
|
+ }
|
|
|
+ flfFulfillerMapper.selectList(
|
|
|
+ Wrappers.lambdaQuery(FlfFulfiller.class).select(FlfFulfiller::getId, FlfFulfiller::getName, FlfFulfiller::getPhone)
|
|
|
+ .in(FlfFulfiller::getId, WrapperUtils.convertIds(fulfillerIds))
|
|
|
+ )
|
|
|
+ .forEach(e -> fulfillerMap.put(e.getId(), e));
|
|
|
|
|
|
return TableDataInfo.build(page.convert(e -> {
|
|
|
+ FlfFulfiller fulfiler = fulfillerMap.get(e.getFulfiller());
|
|
|
+ if (fulfiler != null) {
|
|
|
+ e.setFulfillerName(fulfiler.getName());
|
|
|
+ e.setFulfillerPhone(fulfiler.getPhone());
|
|
|
+ }
|
|
|
if (StringUtils.isNotBlank(e.getPhotos())) {
|
|
|
List<String> photoUrls = new ArrayList<>();
|
|
|
String[] ids = e.getPhotos().split(",");
|
|
|
for (String id : ids) {
|
|
|
- photoUrls.add(photoMap.get(id).getUrl());
|
|
|
+ photoUrls.add(photoMap.get(Long.valueOf(id)).getUrl());
|
|
|
}
|
|
|
e.setPhotosUrls(photoUrls);
|
|
|
}
|
|
|
+ RemoteSubOrderVo order = orderMap.get(e.getOrderId());
|
|
|
+ if (order != null) {
|
|
|
+ e.setOrderCode(order.getCode());
|
|
|
+ }
|
|
|
+ RemoteUserVo auditor = auditorMap.get(e.getAuditor());
|
|
|
+ if (auditor != null) {
|
|
|
+ e.setAuditorName(auditor.getUserName());
|
|
|
+ }
|
|
|
return e;
|
|
|
}));
|
|
|
}
|
|
|
@@ -91,19 +130,104 @@ public class FlfAnamalyServiceImpl implements IFlfAnamalyService {
|
|
|
@Override
|
|
|
public boolean insertByBo(FlfAnamalyAddBo bo) {
|
|
|
|
|
|
- Long orderId = remoteSubOrderService.getIdByCode(bo.getOrderCode());
|
|
|
- if (orderId == null) {
|
|
|
+ RemoteSubOrderVo vo = remoteSubOrderService.getIdByCode(bo.getOrderCode());
|
|
|
+ if (vo == null) {
|
|
|
throw new ServiceException("未能根据订单号 " + bo.getOrderCode() + " 找到订单,请仔细检查");
|
|
|
}
|
|
|
|
|
|
FlfAnamaly add = new FlfAnamaly();
|
|
|
add.setFulfiller(bo.getFulfiller());
|
|
|
- add.setOrderId(orderId);
|
|
|
+ add.setOrderId(vo.getId());
|
|
|
add.setType(bo.getType());
|
|
|
add.setContent(bo.getContent());
|
|
|
add.setPhotos(bo.getPhotos());
|
|
|
add.setStatus(bo.getStatus());
|
|
|
+ add.setTenantId(vo.getTenantId());
|
|
|
|
|
|
return baseMapper.insert(add) > 0;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean audit(FlfAnamalyAuditBo bo) {
|
|
|
+ return baseMapper.update(
|
|
|
+ Wrappers.lambdaUpdate(FlfAnamaly.class)
|
|
|
+ .eq(FlfAnamaly::getId, bo.getId())
|
|
|
+ .set(FlfAnamaly::getStatus, bo.getResult())
|
|
|
+ .set(FlfAnamaly::getAuditRemark, bo.getRemark())
|
|
|
+ .set(FlfAnamaly::getAuditTime, new Date())
|
|
|
+ .set(FlfAnamaly::getAuditor, LoginHelper.getUserId())
|
|
|
+ ) > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean upload(FlfAnamalyUploadBo bo) {
|
|
|
+
|
|
|
+ FlfAnamaly anamaly = new FlfAnamaly();
|
|
|
+ anamaly.setFulfiller(LoginHelper.getUserId());
|
|
|
+ anamaly.setOrderId(bo.getOrderId());
|
|
|
+ anamaly.setType(bo.getType());
|
|
|
+ anamaly.setContent(bo.getContent());
|
|
|
+ anamaly.setPhotos(bo.getPhotos().stream().map(String::valueOf).collect(Collectors.joining(",")));
|
|
|
+
|
|
|
+ RemoteSubOrderVo vo = remoteSubOrderService.getById(bo.getOrderId());
|
|
|
+ anamaly.setTenantId(vo.getTenantId());
|
|
|
+
|
|
|
+ return baseMapper.insert(anamaly) > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<FlfAnamalyOnOrderVo> getByOrderId(Long orderId) {
|
|
|
+
|
|
|
+ List<Long> fulfillerIds = new ArrayList<>();
|
|
|
+ List<Long> auditorIds = new ArrayList<>();
|
|
|
+ List<Long> photoIds = new ArrayList<>();
|
|
|
+ Map<Long, FlfFulfiller> fulfillerMap = new HashMap<>();
|
|
|
+ Map<Long, RemoteUserVo> auditorMap = new HashMap<>();
|
|
|
+ Map<Long, RemoteFile> photoMap = new HashMap<>();
|
|
|
+ List<FlfAnamalyOnOrderVo> vos = new ArrayList<>();
|
|
|
+ List<FlfAnamaly> anamalys = baseMapper.selectList(
|
|
|
+ Wrappers.lambdaQuery(FlfAnamaly.class)
|
|
|
+ .eq(FlfAnamaly::getOrderId, orderId)
|
|
|
+ .orderByDesc(FlfAnamaly::getId)
|
|
|
+ );
|
|
|
+ anamalys.forEach(e -> {
|
|
|
+ fulfillerIds.add(e.getFulfiller());
|
|
|
+ auditorIds.add(e.getAuditor());
|
|
|
+ if (StringUtils.isNotEmpty(e.getPhotos())) {
|
|
|
+ photoIds.addAll(Arrays.stream(e.getPhotos().split(",")).map(Long::valueOf).toList());
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ if (fulfillerIds.isEmpty()) {
|
|
|
+ flfFulfillerMapper.selectByIds(fulfillerIds)
|
|
|
+ .forEach(e -> fulfillerMap.put(e.getId(), e));
|
|
|
+ }
|
|
|
+
|
|
|
+ remoteUserService.selectListByIds(auditorIds).forEach(e -> auditorMap.put(e.getUserId(), e));
|
|
|
+ remoteFileService.selectByIds(photoIds).forEach(e -> photoMap.put(e.getOssId(), e));
|
|
|
+
|
|
|
+ for (FlfAnamaly anamaly : anamalys) {
|
|
|
+ FlfAnamalyOnOrderVo vo = new FlfAnamalyOnOrderVo();
|
|
|
+ vo.setId(anamaly.getId());
|
|
|
+ vo.setType(anamaly.getType());
|
|
|
+ vo.setContent(anamaly.getContent());
|
|
|
+ vo.setPhotos(Arrays.stream(anamaly.getPhotos().split(",")).map(Long::valueOf).map(e -> photoMap.get(e).getUrl()).toList());
|
|
|
+ vo.setFulfiller(anamaly.getFulfiller());
|
|
|
+ FlfFulfiller fulfiller = fulfillerMap.get(anamaly.getFulfiller());
|
|
|
+ if (fulfiller != null) {
|
|
|
+ vo.setFulfillerName(fulfiller.getName());
|
|
|
+ }
|
|
|
+ vo.setStatus(anamaly.getStatus());
|
|
|
+ vo.setAuditor(anamaly.getAuditor());
|
|
|
+ RemoteUserVo auditor = auditorMap.get(anamaly.getAuditor());
|
|
|
+ if (auditor != null) {
|
|
|
+ vo.setAuditorName(auditor.getUserName());
|
|
|
+ }
|
|
|
+ vo.setAuditRemark(anamaly.getAuditRemark());
|
|
|
+ vo.setAuditTime(anamaly.getAuditTime());
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ return vos;
|
|
|
+ }
|
|
|
}
|