package com.dg.core.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.dg.core.db.gen.entity.*;
|
import com.dg.core.db.gen.mapper.*;
|
import com.dg.core.service.IGuideRepairOrderService;
|
import com.dg.core.util.Snowflake;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.time.LocalDateTime;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
@Service
|
public class GuideRepairOrderServiceImpl extends ServiceImpl<GuideRepairOrderMapper, GuideRepairOrder> implements IGuideRepairOrderService {
|
|
@Resource
|
private TransactionEventMapper transactionEventMapper;
|
|
@Resource
|
private GuideRepairOrderImageMapper guideRepairOrderImageMapper;
|
|
@Resource
|
private SysUserMapper sysUserMapper;
|
|
@Resource
|
private OrganizationChartMapper organizationChartMapper;
|
|
@Resource
|
private GuideEvolveMapper guideEvolveMapper;
|
|
@Override
|
public int addOrder(GuideRepairOrder guideRepairOrder){
|
|
TransactionEvent transactionEvent = transactionEventMapper.selectOne(new QueryWrapper<TransactionEvent>().lambda().
|
eq(TransactionEvent::getId, guideRepairOrder.getMatterId()));
|
guideRepairOrder.setOrderNum(Long.toString(Snowflake.getId()));
|
guideRepairOrder.setMatterName(transactionEvent.getMatterName());
|
guideRepairOrder.setDepartmentId(transactionEvent.getDepartmentId());
|
guideRepairOrder.setClassifyId(transactionEvent.getClassifyId());
|
List<String> departmentIds=new ArrayList<>();
|
//自动分配业务代码开始
|
List<OrganizationChartEntity> organizationChartEntities = organizationChartMapper.selectByCode(guideRepairOrder.getAreaCode());
|
if (organizationChartEntities!=null){
|
for (OrganizationChartEntity organizationChart:organizationChartEntities) {
|
departmentIds.add(organizationChart.getId().toString());
|
}
|
List<SysUser> sysUsers = sysUserMapper.selectListByDepartmentId(departmentIds, "," + transactionEvent.getClassifyId(), transactionEvent.getClassifyId() + ",");//获取导半人员
|
if (sysUsers==null) {//如果此所属地区部门没有导半人员则看其下级地区有没有相关分类导办人员
|
for (OrganizationChartEntity organizationChart:organizationChartEntities) {
|
//获取下级部门
|
List<OrganizationChartEntity> organizationChartEntitiesUser = organizationChartMapper.selectList(new QueryWrapper<OrganizationChartEntity>().lambda()
|
.eq(OrganizationChartEntity::getParentId, organizationChart.getId().toString()));
|
if (organizationChartEntitiesUser!=null)
|
departmentIds=this.getDepartmentIds(organizationChartEntitiesUser,departmentIds);
|
}
|
sysUsers = sysUserMapper.selectListByDepartmentId(departmentIds, "," + transactionEvent.getClassifyId(), transactionEvent.getClassifyId() + ",");//获取导半人员
|
if (sysUsers==null){//如果其下级部门仍没有该分类的导半人员则查询所以该所属地区的导办人员
|
sysUsers = sysUserMapper.selectListByDepartmentId(departmentIds,null,null);//获取导半人员
|
if(sysUsers==null)//如果该所属地区没有导办人员则为特殊单据需要手动分配
|
guideRepairOrder.setState("1");
|
}
|
}
|
if (sysUsers!=null){//系统分配导办人员
|
SysUser sysUser = sysUsers.get(0);//因为sql用了升序排序所以第一条就是待办结最少的人员之一
|
guideRepairOrder.setState("2");
|
guideRepairOrder.setGuideUserId(sysUser.getUserId().toString());
|
guideRepairOrder.setGuideDepartmentId(sysUser.getDepartmentId());
|
//新增分配记录
|
GuideEvolveEntity entity=new GuideEvolveEntity();
|
entity.setCreateTime(LocalDateTime.now());
|
entity.setUpdateTime(LocalDateTime.now());
|
entity.setState("10");
|
entity.setDepartmentalId(sysUser.getDepartmentId());
|
entity.setToUserId(guideRepairOrder.getGuideUserId()+"");
|
entity.setFromUserId(guideRepairOrder.getSubmitUserId());
|
entity.setFromDepartmentalId(guideRepairOrder.getGuideDepartmentId());
|
entity.setGuideId(guideRepairOrder.getId().toString());
|
guideEvolveMapper.insertConfig(entity);
|
}
|
}
|
else{//如果该办事指南用户所选所属地区无导半部门则为特殊单据需要手动分配
|
guideRepairOrder.setState("1");
|
}
|
//自动分配业务代码结束
|
guideRepairOrder.setCreateTime(LocalDateTime.now());
|
guideRepairOrder.setUpdateTime(LocalDateTime.now());
|
transactionEvent.setTransactionNum(transactionEvent.getTransactionNum()+1);
|
//保存图片地址
|
if (guideRepairOrder.getImages()!=null){
|
String[] images = guideRepairOrder.getImages().split(",");
|
for (String image: images) {
|
GuideRepairOrderImage guideRepairOrderImage = new GuideRepairOrderImage();
|
guideRepairOrderImage.setId(Snowflake.getId());
|
guideRepairOrderImage.setGuideRepairOrderId(guideRepairOrder.getOrderNum());
|
guideRepairOrderImage.setUrl(image);
|
guideRepairOrderImage.setCreateTime(LocalDateTime.now());
|
guideRepairOrderImage.setType(1);
|
guideRepairOrderImageMapper.insert(guideRepairOrderImage);
|
}
|
}
|
//保存视频地址
|
if (guideRepairOrder.getVideo()!=null){
|
if (guideRepairOrder.getOrderNum()!=null){
|
GuideRepairOrderImage guideRepairOrderImage = new GuideRepairOrderImage();
|
guideRepairOrderImage.setId(Snowflake.getId());
|
guideRepairOrderImage.setGuideRepairOrderId(guideRepairOrder.getOrderNum());
|
guideRepairOrderImage.setUrl(guideRepairOrder.getVideo());
|
guideRepairOrderImage.setCreateTime(LocalDateTime.now());
|
guideRepairOrderImage.setType(2);
|
guideRepairOrderImageMapper.insert(guideRepairOrderImage);
|
}
|
}
|
int ans= baseMapper.insert(guideRepairOrder);
|
int i = transactionEventMapper.updateById(transactionEvent);
|
if (ans>0&&i>0)
|
return 1;
|
else
|
return 0;
|
|
}
|
|
public List<String> getDepartmentIds( List<OrganizationChartEntity> organizationChartEntities,List<String> departmentIds){
|
for (OrganizationChartEntity organizationChart:organizationChartEntities) {
|
departmentIds.add(organizationChart.getId().toString());
|
List<OrganizationChartEntity> organizationChartEntitiesUser = organizationChartMapper.selectList(new QueryWrapper<OrganizationChartEntity>().lambda()
|
.eq(OrganizationChartEntity::getParentId, organizationChart.getId().toString()));
|
if (organizationChartEntitiesUser!=null)
|
departmentIds=this.getDepartmentIds(organizationChartEntitiesUser,departmentIds);
|
|
}
|
return departmentIds;
|
}
|
|
@Override
|
public GuideRepairOrder selectConfigData(String Id, String orderNum) {
|
return baseMapper.selectConfigData(Id,orderNum);
|
}
|
|
@Override
|
public int updateConfig(GuideRepairOrder order) {
|
SysUser sysUser = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getGuideUserId()));
|
order.setGuideUserPhone(sysUser.getPhonenumber());
|
return baseMapper.updateConfig(order);
|
}
|
|
@Override
|
public List<GuideRepairOrder> selectBySubmitId(String submitUserId) {
|
return baseMapper.selectBySubmitId(submitUserId);
|
}
|
|
@Override
|
public List<GuideRepairOrder> selectConfigList(IPage<GuideRepairOrder> page, Integer state, String matterName,List<String> ids) {
|
return baseMapper.selectConfigList(page,state,matterName, ids);
|
}
|
|
@Override
|
public int countConfigList(String matterName,List<String> ids) {
|
return baseMapper.countConfigList(matterName,ids);
|
}
|
|
|
}
|