package com.whyc.service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.whyc.dto.Response;
|
import com.whyc.mapper.DocUserMapper;
|
import com.whyc.mapper.WorksheetLinkMapper;
|
import com.whyc.mapper.WorksheetMainMapper;
|
import com.whyc.pojo.DocUser;
|
import com.whyc.pojo.ProductBomApproving;
|
import com.whyc.pojo.WorksheetLink;
|
import com.whyc.pojo.WorksheetMain;
|
import io.swagger.models.auth.In;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.annotation.Lazy;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
@Service
|
public class WorksheetMainService {
|
|
@Resource
|
private WorksheetMainMapper mainMapper;
|
|
@Resource
|
private WorksheetLinkMapper linkMapper;
|
|
@Autowired
|
@Lazy
|
private WorksheetLinkService linkService;
|
|
@Resource
|
private DocUserMapper userMapper;
|
|
@Autowired
|
private ProductBomApprovingService approvingService;
|
|
@Transactional
|
public boolean submit(WorksheetMain main, DocUser user) {
|
List<ProductBomApproving> bomList = main.getApprovingBomList();
|
int rejectVersion=-1;
|
//提交主表
|
main.setCreateUserId(user.getId());
|
//提交人角色来判断工作流层级
|
if(user.getRoleId().equals("1001")){
|
if(main.getId()==null) {
|
main.setLevel(2);
|
main.setStatus(1);
|
mainMapper.insert(main);
|
}else {
|
rejectVersion = approvingService.getRejectVersion(main.getId());
|
}
|
//提交子表
|
WorksheetLink link =new WorksheetLink();
|
link.setMainId(main.getId());
|
link.setParentId(0);
|
link.setDealUserId(main.getNextUser());
|
link.setDealType(1);
|
link.setDealDesc(main.getDealDesc());
|
link.setLinkStatus(0);
|
link.setEnableArchive(0);
|
link.setRejectVersion(rejectVersion+1);
|
linkMapper.insert(link);
|
}
|
else if(user.getRoleId().equals("1002")){
|
if(main.getId()==null) {
|
main.setLevel(1);
|
main.setStatus(2);
|
mainMapper.insert(main);
|
}else {
|
rejectVersion = approvingService.getRejectVersion(main.getId());
|
}
|
//提交子表
|
WorksheetLink link =new WorksheetLink();
|
link.setMainId(main.getId());
|
link.setParentId(0);
|
link.setDealUserId(main.getNextUser());
|
link.setDealType(2);
|
link.setDealDesc(main.getDealDesc());
|
link.setLinkStatus(0);
|
link.setEnableArchive(1);
|
link.setRejectVersion(rejectVersion+1);
|
linkMapper.insert(link);
|
}
|
else if(user.getRoleId().equals("1003")){
|
main.setLevel(0);
|
main.setStatus(5);
|
mainMapper.insert(main);
|
}else{
|
return false;
|
}
|
//产品bom/图纸图片提交
|
//查询当前驳回版本
|
int nextRejectVersion = rejectVersion+1;
|
bomList.forEach(bom->{
|
bom.setMainId(main.getId());
|
bom.setUpUserId(user.getId());
|
bom.setRejectVersion(nextRejectVersion);
|
});
|
approvingService.insert(bomList);
|
return true;
|
}
|
|
public WorksheetMain getInfoById(Integer id) {
|
return mainMapper.selectById(id);
|
}
|
|
public void updateStatusById(Integer id,Integer status) {
|
WorksheetMain main = new WorksheetMain();
|
main.setId(id);
|
main.setStatus(status);
|
mainMapper.updateById(main);
|
}
|
|
public void updateEndStatusById(Integer id,String endReason,Integer status) {
|
WorksheetMain main = new WorksheetMain();
|
main.setId(id);
|
main.setStatus(status);
|
main.setEndReason(endReason);
|
main.setEndTime(new Date());
|
mainMapper.updateById(main);
|
}
|
|
/**
|
* 用户对应的工作台数据分类
|
* @param user
|
* @return*/
|
public Map<String, Integer> getStatusStatistic(DocUser user) {
|
Map<String,Integer> map = new HashMap<>();
|
switch (user.getRoleId()){
|
//普通员工
|
case "1001":
|
{
|
//未处理(审批中)/已驳回/已审批
|
map.put("rejected",0);
|
map.put("approving",0);
|
map.put("approved",0);
|
QueryWrapper<WorksheetMain> query = Wrappers.query();
|
query.eq("create_user_id",user.getId());
|
List<WorksheetMain> worksheetMainList = mainMapper.selectList(query);
|
Map<Integer, List<WorksheetMain>> groupingList = worksheetMainList.stream().collect(Collectors.groupingBy(WorksheetMain::getStatus));
|
groupingList.forEach((status,mainList)->{
|
switch (status){
|
case 0:{
|
map.put("rejected",mainList.size());
|
}break;
|
case 1:
|
case 2:{
|
Integer addedMainCount= map.get("approving");
|
if(addedMainCount ==0){
|
map.put("approving",mainList.size());
|
}else{
|
map.put("approving",addedMainCount+mainList.size());
|
}
|
}break;
|
case 5:{
|
map.put("approved",mainList.size());
|
}break;
|
}
|
});
|
}
|
break;
|
//项目经理
|
case "1002":
|
{
|
//待处理/已处理/属于自己-审批中/已驳回/已审批
|
//属于自己-审批中/已驳回/已审批
|
map.put("rejected",0);
|
map.put("approving",0);
|
map.put("approved",0);
|
map.put("handling",0);
|
map.put("handled",0);
|
|
QueryWrapper<WorksheetMain> query = Wrappers.query();
|
query.eq("create_user_id",user.getId());
|
List<WorksheetMain> worksheetMainList = mainMapper.selectList(query);
|
Map<Integer, List<WorksheetMain>> groupingList = worksheetMainList.stream().collect(Collectors.groupingBy(WorksheetMain::getStatus));
|
groupingList.forEach((status,mainList)->{
|
switch (status){
|
case 0:{
|
map.put("rejected",mainList.size());
|
}break;
|
case 2:{
|
map.put("approving",mainList.size());
|
}break;
|
case 5:{
|
map.put("approved",mainList.size());
|
}break;
|
}
|
});
|
//待处理/已处理
|
List<WorksheetLink> WorksheetLinkList = linkService.getInfoList(user.getId());
|
Map<Integer, List<WorksheetLink>> groupingLinkList = WorksheetLinkList.stream().collect(Collectors.groupingBy(WorksheetLink::getLinkStatus));
|
groupingLinkList.forEach((linkStatus,linkList)->{
|
List<WorksheetMain> mainList = new LinkedList<>();
|
linkList.forEach(link -> {mainList.add(link.getMain());});
|
switch (linkStatus){
|
case 0:{
|
map.put("handling",mainList.size());
|
}break;
|
case 1:
|
case 2:{
|
Integer addedMainCount= map.get("handled");
|
if(addedMainCount ==0){
|
map.put("handled",mainList.size());
|
}else{
|
map.put("handled",addedMainCount+mainList.size());
|
}
|
}break;
|
}
|
});
|
}
|
break;
|
//总经理
|
case "1003":
|
{
|
//待处理/已审批
|
map.put("handling",0);
|
map.put("approved",0);
|
List<WorksheetLink> WorksheetLinkList = linkService.getInfoList(user.getId());
|
Map<Integer, List<WorksheetLink>> groupingLinkList = WorksheetLinkList.stream().collect(Collectors.groupingBy(WorksheetLink::getLinkStatus));
|
groupingLinkList.forEach((linkStatus,linkList)->{
|
List<WorksheetMain> mainList = new LinkedList<>();
|
linkList.forEach(link -> {mainList.add(link.getMain());});
|
switch (linkStatus){
|
case 0:{
|
map.put("handling",mainList.size());
|
}break;
|
case 1:
|
case 2:{
|
Integer addedMainCount= map.get("approved");
|
if(addedMainCount ==0){
|
map.put("approved",mainList.size());
|
}else{
|
map.put("approved",addedMainCount+mainList.size());
|
}
|
}break;
|
}
|
});
|
}
|
break;
|
}
|
//查询我的工单数量
|
QueryWrapper<WorksheetMain> query = Wrappers.query();
|
query.eq("create_user_id",user.getId());
|
Integer count = mainMapper.selectCount(query);
|
map.put("my",count);
|
|
return map;
|
}
|
|
public WorksheetMain getLinkList(int id) {
|
return mainMapper.getLinkList(id);
|
}
|
|
public Response<PageInfo<WorksheetMain>> getApprovingListPage(DocUser user, int pageNum, int pageSize) {
|
PageHelper.startPage(pageNum,pageSize);
|
QueryWrapper<WorksheetMain> query = Wrappers.query();
|
query.eq("create_user_id",user.getId()).in("status",1,2).orderByDesc("id");
|
List<WorksheetMain> worksheetMainList = mainMapper.selectList(query);
|
//查询主表状态对应的子表
|
worksheetMainList.forEach(main -> {
|
main.setApprovingUser(linkService.getApprovingUser(main.getId()));
|
});
|
PageInfo<WorksheetMain> pageInfo = new PageInfo<>(worksheetMainList);
|
return new Response<PageInfo<WorksheetMain>>().set(1,pageInfo);
|
}
|
|
public Response<PageInfo<WorksheetMain>> getRejectedListPage(DocUser user, int pageNum, int pageSize) {
|
PageHelper.startPage(pageNum,pageSize);
|
QueryWrapper<WorksheetMain> query = Wrappers.query();
|
query.eq("create_user_id",user.getId()).in("status",0).orderByDesc("id");
|
List<WorksheetMain> worksheetMainList = mainMapper.selectList(query);
|
PageInfo<WorksheetMain> pageInfo = new PageInfo<>(worksheetMainList);
|
return new Response<PageInfo<WorksheetMain>>().set(1,pageInfo);
|
}
|
|
public Response<PageInfo<WorksheetMain>> getApprovedListPage(DocUser user, int pageNum, int pageSize) {
|
Response<PageInfo<WorksheetMain>> response = new Response<>();
|
PageHelper.startPage(pageNum,pageSize);
|
List<WorksheetMain> worksheetMainList = null;
|
//自己的工单
|
if(!user.getRoleId().equals("1003")){
|
QueryWrapper<WorksheetMain> query = Wrappers.query();
|
query.eq("create_user_id",user.getId()).in("status",5).orderByDesc("id");
|
worksheetMainList = mainMapper.selectList(query);
|
|
}else{
|
//总经理,节点审批人为自己
|
worksheetMainList = linkService.getInfoList2(user.getId(),1);
|
}
|
PageInfo<WorksheetMain> pageInfo = new PageInfo<>(worksheetMainList);
|
return response.set(1,pageInfo);
|
}
|
|
public Response<PageInfo<WorksheetMain>> getHandlingListPage(DocUser user, int pageNum, int pageSize) {
|
PageHelper.startPage(pageNum,pageSize);
|
List<WorksheetMain> worksheetMainList = linkService.getInfoList2(user.getId(),0);
|
PageInfo<WorksheetMain> pageInfo = new PageInfo<>(worksheetMainList);
|
return new Response<PageInfo<WorksheetMain>>().set(1,pageInfo);
|
}
|
|
public Response<PageInfo<WorksheetMain>> getHandledListPage(DocUser user, int pageNum, int pageSize) {
|
PageHelper.startPage(pageNum,pageSize);
|
List<WorksheetMain> worksheetMainList = linkService.getInfoList3(user.getId(),1);
|
PageInfo<WorksheetMain> pageInfo = new PageInfo<>(worksheetMainList);
|
return new Response<PageInfo<WorksheetMain>>().set(1,pageInfo);
|
}
|
|
public WorksheetMain getInfo(int id) {
|
return mainMapper.selectById(id);
|
}
|
|
public Response<PageInfo<WorksheetMain>> getMyList(int pageNum, int pageSize, DocUser user) {
|
PageHelper.startPage(pageNum,pageSize);
|
QueryWrapper<WorksheetMain> query = Wrappers.query();
|
query.eq("create_user_id",user.getId()).orderByDesc("id");
|
List<WorksheetMain> worksheetMainList = mainMapper.selectList(query);
|
PageInfo<WorksheetMain> pageInfo = new PageInfo<>(worksheetMainList);
|
return new Response<PageInfo<WorksheetMain>>().set(1,pageInfo);
|
|
}
|
}
|