package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.mapper.DeviceBorrowMapper;
import com.yuanchu.mom.mapper.DeviceLogMapper;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.numgen.NumberGenerator;
import com.yuanchu.mom.pojo.DeviceBorrow;
import com.yuanchu.mom.pojo.DeviceLog;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.DeviceBorrowService;
import com.yuanchu.mom.utils.QueryWrappers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
/**
*
* 服务实现类
*
*
* @author 江苏鵷雏网络科技有限公司
* @since 2024-09-21 10:53:51
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class DeviceBorrowServiceImpl extends ServiceImpl implements DeviceBorrowService {
@Resource
DeviceBorrowMapper deviceBorrowMapper;
@Resource
DeviceLogMapper deviceLogMapper;
@Resource
GetLook getLook;
@Resource
UserMapper userMapper;
@Autowired
private NumberGenerator numberGenerator;
@Override
public Map deviceBorrowPage(Page page, DeviceBorrow deviceBorrow) {
Map map = new HashMap<>();
map.put("head", PrintChina.printChina(DeviceBorrow.class));
IPage iPage = deviceBorrowMapper.deviceBorrowPage(page, QueryWrappers.queryWrappers(deviceBorrow));
map.put("body", iPage);
return map;
}
@Override
public int saveDeviceBorrow(DeviceBorrow deviceBorrow) {
Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
User user = userMapper.selectById(userId);
//新增的时候添加新建流程
if (ObjectUtils.isEmpty(deviceBorrow.getId())) {
deviceBorrow.setSubmitUser(user.getName());
String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date());
String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date());
String processNumber = numberGenerator.generateNumberWithPrefix(3, "DG-TC-23FM " + month + "-" + year + month, DeviceBorrow::getProcessNumber);
deviceBorrow.setProcessNumber(processNumber);
deviceBorrowMapper.insert(deviceBorrow);
DeviceLog deviceLog = new DeviceLog();
deviceLog.setOperator(user.getName());
deviceLog.setOperationTime(LocalDateTime.now());
deviceLog.setOperationType("新建");
deviceLog.setOperationContent("新建流程");
deviceLog.setRelevanceForm("device_borrow");
deviceLog.setRelevanceId(deviceBorrow.getId());
deviceLogMapper.insert(deviceLog);
} else {
DeviceBorrow borrow = deviceBorrowMapper.selectById(deviceBorrow.getId());
deviceBorrowMapper.updateById(deviceBorrow);
//通过或者驳回增加流程跟踪
if (deviceBorrow.getNowState().equals("关闭")) {
DeviceLog deviceLog = new DeviceLog();
deviceLog.setOperator(user.getName());
deviceLog.setOperationTime(LocalDateTime.now());
deviceLog.setOperationType("接收通过");
deviceLog.setRelevanceForm("device_borrow");
deviceLog.setRelevanceId(deviceBorrow.getId());
deviceLogMapper.insert(deviceLog);
}
else if (deviceBorrow.getNowState().equals("提交") && borrow.getNowState().equals("接收")) {
DeviceLog deviceLog = new DeviceLog();
deviceLog.setOperator(user.getName());
deviceLog.setOperationTime(LocalDateTime.now());
deviceLog.setOperationType("接收驳回");
deviceLog.setRelevanceForm("device_borrow");
deviceLog.setRelevanceId(deviceBorrow.getId());
deviceLogMapper.insert(deviceLog);
}
}
return 0;
}
@Override
public DeviceBorrow getDeviceBorrow(Integer id) {
List deviceLogs = deviceLogMapper.selectList(Wrappers.lambdaQuery()
.eq(DeviceLog::getRelevanceForm, "device_borrow")
.eq(DeviceLog::getRelevanceId, id));
DeviceBorrow deviceBorrow = deviceBorrowMapper.selectById(id);
deviceBorrow.setDeviceLogs(deviceLogs);
return deviceBorrow;
}
@Override
public List getDeviceBorrowBydeviceId(Integer deviceId) {
return deviceBorrowMapper.getDeviceBorrowBydeviceId(deviceId);
}
}