|
|
|
@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
|
import com.logpm.aftersales.dto.AftersalesProcessingResultsDTO; |
|
|
|
|
import com.logpm.aftersales.dto.AftersalesWorkOrderDTO; |
|
|
|
|
import com.logpm.aftersales.entity.*; |
|
|
|
|
import com.logpm.aftersales.service.*; |
|
|
|
@ -34,6 +35,7 @@ import lombok.AllArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
import org.springblade.common.constant.DictBizConstant; |
|
|
|
|
import org.springblade.common.constant.aftersales.WorkOrderStatusConstant; |
|
|
|
|
import org.springblade.common.constant.aftersales.WorkOrderTypesOfStatusConstant; |
|
|
|
|
import org.springblade.core.log.exception.ServiceException; |
|
|
|
|
import org.springblade.core.mp.support.Condition; |
|
|
|
|
import org.springblade.core.secure.BladeUser; |
|
|
|
@ -57,10 +59,7 @@ import java.time.Duration;
|
|
|
|
|
import java.time.Instant; |
|
|
|
|
import java.time.LocalDateTime; |
|
|
|
|
import java.time.ZoneOffset; |
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.Date; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.*; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -81,6 +80,7 @@ public class AftersalesWorkOrderServiceImpl extends BaseServiceImpl<AftersalesWo
|
|
|
|
|
private final IAftersalesCompletionRecipientService completionRecipientService; |
|
|
|
|
private final IAftersalesProcessingResultsService aftersalesProcessingResultsService; |
|
|
|
|
private final IAftersalesOvertimeFineService aftersalesOvertimeFineService; |
|
|
|
|
private final IAftersalesArbitrationOrderService aftersalesArbitrationOrderService; |
|
|
|
|
|
|
|
|
|
private final IBasicdataWarehouseClient warehouseClient; |
|
|
|
|
|
|
|
|
@ -307,9 +307,8 @@ public class AftersalesWorkOrderServiceImpl extends BaseServiceImpl<AftersalesWo
|
|
|
|
|
} |
|
|
|
|
//添加赔付方信息
|
|
|
|
|
completionRecordService.saveBatch(v.getCompletionRecordEntities()); |
|
|
|
|
|
|
|
|
|
//添加受款方信息,可以为空
|
|
|
|
|
if(ObjectUtils.isNull(v.getCompletionRecipientEntities())){ |
|
|
|
|
if(ObjectUtils.isNotNull(v.getCompletionRecipientEntities())){ |
|
|
|
|
completionRecipientService.saveBatch(v.getCompletionRecipientEntities()); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
@ -325,6 +324,55 @@ public class AftersalesWorkOrderServiceImpl extends BaseServiceImpl<AftersalesWo
|
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public IPage<AftersalesWorkOrderEntity> pageListOwn(Map<String, Object> aftersalesWorkOrder, IPage<Object> page) { |
|
|
|
|
//查询用户角色信息
|
|
|
|
|
BladeUser user = AuthUtil.getUser(); |
|
|
|
|
String roleName = user.getRoleName(); |
|
|
|
|
String tenantId = user.getTenantId(); |
|
|
|
|
|
|
|
|
|
//查询客服岗位
|
|
|
|
|
List<DictBiz> warehouseType = DictBizCache.getList("after_sales_visits"); |
|
|
|
|
if (warehouseType.isEmpty()) { |
|
|
|
|
throw new ServiceException("注意,注意!售后访问字典未配置!请配置!"); |
|
|
|
|
} else { |
|
|
|
|
Optional<DictBiz> first = warehouseType.stream().filter(i -> { |
|
|
|
|
if (i.getDictKey().equals(roleName)) { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
}).findFirst(); |
|
|
|
|
if(first.isPresent()){ |
|
|
|
|
//存在
|
|
|
|
|
DictBiz dictBiz = first.get(); |
|
|
|
|
String dictValue = dictBiz.getDictValue(); |
|
|
|
|
switch (dictValue){ |
|
|
|
|
case "1": //客服经理 查询全部待处理工单
|
|
|
|
|
|
|
|
|
|
break; |
|
|
|
|
case "2": // 营业部客服
|
|
|
|
|
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse(); |
|
|
|
|
if(ObjectUtils.isNotNull(myCurrentWarehouse)){ |
|
|
|
|
aftersalesWorkOrder.put("warehouseId", myCurrentWarehouse.getId()); |
|
|
|
|
}else{ |
|
|
|
|
throw new ServiceException("请选择仓库!"); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case "3": //职能客服 查询自己的待处理工单
|
|
|
|
|
aftersalesWorkOrder.put("customer_service_id",user.getUserId()); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
}else{ |
|
|
|
|
//不存在
|
|
|
|
|
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse(); |
|
|
|
|
if(ObjectUtils.isNotNull(myCurrentWarehouse)){ |
|
|
|
|
aftersalesWorkOrder.put("warehouseId", myCurrentWarehouse.getId()); |
|
|
|
|
}else{ |
|
|
|
|
throw new ServiceException("请选择仓库!"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
AftersalesWorkOrderEntity workOrderEntity = JSONObject.parseObject(JSONObject.toJSONString(aftersalesWorkOrder), AftersalesWorkOrderEntity.class); |
|
|
|
|
return baseMapper.pageListOwn(page,workOrderEntity); |
|
|
|
@ -634,13 +682,81 @@ public class AftersalesWorkOrderServiceImpl extends BaseServiceImpl<AftersalesWo
|
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public boolean updateArbitrate(AftersalesWorkOrderDTO aftersalesWorkOrder) { |
|
|
|
|
List<AftersalesArbitrationOrderEntity> arbitrationOrderList = new ArrayList<>(); |
|
|
|
|
aftersalesWorkOrder.getAssignList().forEach(i ->{ |
|
|
|
|
AftersalesWorkOrderEntity aftersalesWorkOrderEntity = new AftersalesWorkOrderEntity(); |
|
|
|
|
aftersalesWorkOrderEntity.setId(i); |
|
|
|
|
aftersalesWorkOrderEntity.setWorkOrderStatus(WorkOrderStatusConstant.zhongchaizhong.getValue()); |
|
|
|
|
baseMapper.updateById(aftersalesWorkOrderEntity); |
|
|
|
|
//添加仲裁记录
|
|
|
|
|
AftersalesArbitrationOrderEntity aftersalesArbitrationOrderEntity = new AftersalesArbitrationOrderEntity(); |
|
|
|
|
aftersalesArbitrationOrderEntity.setWorkOrderId(i); |
|
|
|
|
aftersalesArbitrationOrderEntity.setOperateType("正常"); |
|
|
|
|
aftersalesArbitrationOrderEntity.setTypesOf(WorkOrderTypesOfStatusConstant.kaiqi.getValue()); |
|
|
|
|
arbitrationOrderList.add(aftersalesArbitrationOrderEntity); |
|
|
|
|
}); |
|
|
|
|
if(!arbitrationOrderList.isEmpty()){ |
|
|
|
|
//添加仲裁记录
|
|
|
|
|
aftersalesArbitrationOrderService.saveBatch(arbitrationOrderList); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 异常工单 客服仲裁完结 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public boolean addArbitrateEnd(AftersalesWorkOrderDTO aftersalesWorkOrder) { |
|
|
|
|
|
|
|
|
|
for (Long l : aftersalesWorkOrder.getAssignList()) { |
|
|
|
|
//查询工单的状态
|
|
|
|
|
AftersalesWorkOrderEntity workOrderEntity = baseMapper.selectById(l); |
|
|
|
|
if(!workOrderEntity.getWorkOrderStatus().equals(WorkOrderStatusConstant.zhongchaizhong.getValue())){ |
|
|
|
|
throw new ServiceException("包含不是仲裁的订单数据!无法强制完结!"); |
|
|
|
|
} |
|
|
|
|
//添加处理结果
|
|
|
|
|
AftersalesProcessingResultsDTO aftersalesProcessingResultsDTO = aftersalesWorkOrder.getAftersalesProcessingResultsDTO(); |
|
|
|
|
aftersalesProcessingResultsService.ownSaveOrUpdate(aftersalesProcessingResultsDTO); |
|
|
|
|
//添加完结数据
|
|
|
|
|
List<AftersalesWorkOrderDTO> orderDTOList = new ArrayList<>(); |
|
|
|
|
orderDTOList.add(aftersalesWorkOrder); |
|
|
|
|
addCompletionEnd(orderDTOList); |
|
|
|
|
//修改工单状态
|
|
|
|
|
AftersalesWorkOrderEntity aftersalesWorkOrderEntity = new AftersalesWorkOrderEntity(); |
|
|
|
|
aftersalesWorkOrderEntity.setId(l); |
|
|
|
|
aftersalesWorkOrderEntity.setWorkOrderStatus(WorkOrderStatusConstant.yiwanjei.getValue()); |
|
|
|
|
baseMapper.updateById(aftersalesWorkOrderEntity); |
|
|
|
|
//修改
|
|
|
|
|
LambdaUpdateWrapper<AftersalesArbitrationOrderEntity> lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); |
|
|
|
|
lambdaUpdateWrapper.eq(AftersalesArbitrationOrderEntity::getWorkOrderId,l); |
|
|
|
|
lambdaUpdateWrapper.set(AftersalesArbitrationOrderEntity::getOperateType,"客服完结"); |
|
|
|
|
lambdaUpdateWrapper.set(AftersalesArbitrationOrderEntity::getTypesOf,WorkOrderTypesOfStatusConstant.jeishu.getValue()); |
|
|
|
|
aftersalesArbitrationOrderService.update(lambdaUpdateWrapper); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 查询 营业部责任人人员信息 |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public List<User> getBusinessDepartmentUser(Long warehouseId) { |
|
|
|
|
BasicdataWarehouseEntity entityWarehouseId = warehouseClient.getEntityWarehouseId(warehouseId); |
|
|
|
|
if(ObjectUtils.isNotNull(warehouseId)){ |
|
|
|
|
//查询单独的责任人
|
|
|
|
|
|
|
|
|
|
R<List<User>> listR = userSearchClient.listByName(entityWarehouseId.getLinkman()); |
|
|
|
|
return listR.getData(); |
|
|
|
|
}else{ |
|
|
|
|
//查询全部数据
|
|
|
|
|
R<List<User>> listR = userSearchClient.listByDept(String.valueOf(entityWarehouseId.getDepartment())); |
|
|
|
|
return listR.getData(); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|