package com.huimv.receive.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.huimv.receive.common.token.TokenSign;
import com.huimv.receive.common.utils.DataUill;
import com.huimv.receive.common.utils.Print;
import com.huimv.receive.common.utils.Result;
import com.huimv.receive.common.utils.ResultCode;
import com.huimv.receive.entity.*;
import com.huimv.receive.entity.dto.PcrDto;
import com.huimv.receive.entity.vo.PcrVo;
import com.huimv.receive.entity.vo.PcrVo1;
import com.huimv.receive.mapper.*;
import com.huimv.receive.service.IBillPcrService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/**
*
* pcr 表 服务实现类
*
*
* @author author
* @since 2023-07-21
*/
@Service
public class BillPcrServiceImpl extends ServiceImpl implements IBillPcrService {
@Resource
private BillPcrMapper billPcrMapper;
@Override
public Result listPersonalPcr(HttpServletRequest httpServletRequest, Map paramsMap) {
String pageNo = paramsMap.get("pageNum");
String pageSize = paramsMap.get("pageSize");
String vistitType = paramsMap.get("vistitType");
Page page = new Page<>(Integer.parseInt(pageNo), Integer.parseInt(pageSize));
Page billPcrPage = billPcrMapper.selectPage(page, new QueryWrapper().eq(StringUtils.isNotBlank(vistitType),"vistit_type",vistitType).eq("admission_user_id", TokenSign.getMemberIdByJwtToken(httpServletRequest)).orderByDesc("sub_date"));
QueryWrapper queryWrapper=new QueryWrapper<>();
queryWrapper.eq(StringUtils.isNotBlank(vistitType),"vistit_type",vistitType).eq("admission_user_id", TokenSign.getMemberIdByJwtToken(httpServletRequest)).orderByDesc("sub_date");
return new Result(ResultCode.SUCCESS, billPcrPage,billPcrMapper.selectCount(queryWrapper));
}
@Override
public Result pcrWhole(HttpServletRequest httpServletRequest, Map paramsMap) {
String farmId = paramsMap.get("farmId");
Date timesmorning = DataUill.getTimesmorning();
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("farm_id", farmId).eq("bill_status", 1).ge("sub_date", timesmorning);//今日合格
Integer count = billPcrMapper.selectCount(queryWrapper);
QueryWrapper queryWrapper1 = new QueryWrapper<>();
queryWrapper1.eq("farm_id", farmId).eq("bill_status", 2).ge("sub_date", timesmorning);//今日异常
Integer count1 = billPcrMapper.selectCount(queryWrapper1);
QueryWrapper queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("farm_id", farmId).eq("bill_status", 3).ge("sub_date", timesmorning);//今日失效
Integer count2 = billPcrMapper.selectCount(queryWrapper2);
PcrDto dto = new PcrDto();
dto.setWholeCount(count + count1);
dto.setPassCount(count);
dto.setRefuseCount(count1);
dto.setLoseCount(count2);
return new Result(ResultCode.SUCCESS, dto);
}
@Override
public Result listType(HttpServletRequest httpServletRequest, Map paramsMap) {
String farmId = paramsMap.get("farmId");
String type = paramsMap.get("type");
if ("".equals(type) || null == type) {
type = "1";
}
List pcrVos = null;
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("farm_id", farmId).in("bill_status", 1, 2);
if ("1".equals(type)) {
Date timesmorning = DataUill.getTimesmorning();
queryWrapper.ge("sub_date", timesmorning);
} else if ("2".equals(type)) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DATE,calendar.get(Calendar.DATE)-7);
queryWrapper.ge("sub_date", calendar.getTime());
} else if ("3".equals(type)) {
Date monthmorning = DataUill.getTimesMonthmorning();
queryWrapper.ge("sub_date",monthmorning);
}
pcrVos = billPcrMapper.listPcr(queryWrapper);
return new Result(ResultCode.SUCCESS, pcrVos);
}
@Override
public Result listLocation(HttpServletRequest httpServletRequest, Map paramsMap) {
String farmId = paramsMap.get("farmId");
String type = paramsMap.get("type");
if ("".equals(type) || null == type) {
type = "1";
}
List pcrVos = null;
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("farm_id", farmId).in("bill_status", 1, 2);
if ("1".equals(type)) {
Date timesmorning = DataUill.getTimesmorning();
queryWrapper.ge("sub_date", timesmorning);
} else if ("2".equals(type)) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DATE,calendar.get(Calendar.DATE)-7);
queryWrapper.ge("sub_date", calendar.getTime());
} else if ("3".equals(type)) {
Date monthmorning = DataUill.getTimesMonthmorning();
queryWrapper.ge("sub_date",monthmorning);
}
pcrVos = billPcrMapper.listLocation(queryWrapper);
return new Result(ResultCode.SUCCESS, pcrVos);
}
@Override
public Result listAll(HttpServletRequest httpServletRequest, Map paramsMap) {
String farmId = paramsMap.get("farmId");
String personType = paramsMap.get("personType");
String type = paramsMap.get("type");
if ("".equals(type) || null == type) {
type = "1";
}
List pcrVos = null;
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("farm_id", farmId).in("bill_status", 1, 2);
if ("".equals(personType) || null == personType) {
}else {
queryWrapper.eq("vistit_type", personType);
}
if ("1".equals(type)) {
Date timesmorning = DataUill.getTimesmorning();
queryWrapper.ge("sub_date", timesmorning);
} else if ("2".equals(type)) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DATE,calendar.get(Calendar.DATE)-7);
queryWrapper.ge("sub_date", calendar.getTime());
} else if ("3".equals(type)) {
Date monthmorning = DataUill.getTimesMonthmorning();
queryWrapper.ge("sub_date",monthmorning);
}
pcrVos = billPcrMapper.listAll(queryWrapper);
for (PcrVo1 pcrVo : pcrVos) {
pcrVo.setAllCount(pcrVo.getPassCount() + pcrVo.getRefuseCount());
}
return new Result(ResultCode.SUCCESS, pcrVos);
}
@Override
public Result selectList(HttpServletRequest httpServletRequest, Map paramsMap) {
String farmId = paramsMap.get("farmId");
String type = paramsMap.get("type");//来访类型
String destId = paramsMap.get("destId");//目的地
String startTime = paramsMap.get("startTime");
String endTime = paramsMap.get("endTime");
String pageNum = paramsMap.get("pageNum");
String pageSize = paramsMap.get("pageSize");
if ("".equals(pageNum) || null == pageNum) {
pageNum = "1";
}
if ("".equals(pageSize) || null == pageSize) {
pageSize = "10";
}
if ("".equals(startTime) || null == startTime) {
startTime = DataUill.getTimesmorning().toString();
endTime = LocalDateTime.now() + " 23:59:59";
}
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.in("bill_status", 1, 2);
queryWrapper.eq("farm_id", farmId).eq(StringUtils.isNotBlank(destId),"dest_id", destId).eq(StringUtils.isNotBlank(type),"vistit_type",type);
queryWrapper.between("check_date", startTime, endTime);
Page page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
return new Result(ResultCode.SUCCESS, billPcrMapper.selectPage(page, queryWrapper));
}
@Override
public void printPcr(HttpServletResponse httpServletRequest, Map paramsMap) throws Exception {
String ids = paramsMap.get("ids");
String[] split = ids.split(",");
List list = new ArrayList<>();
for (String s : split) {
BillPcr admission = billPcrMapper.selectById(s);
list.add(admission);
}
Print.printPcr(list);
}
@Autowired
private BillPcrMapper pcrMapper;
@Autowired
private BaseProcessMapper processMapper;
@Autowired
private BaseLocationMapper locationMapper;
@Autowired
private BillCleanMapper cleanMapper;
@Autowired
private BillGoodsInventoryMapper goodsInventoryMapper;
@Autowired
private ConfigurationMapper configurationMapper;
@Override
public Result list(HttpServletRequest httpServletRequest, Map paramsMap) {
String farmId = paramsMap.get("farmId");
String type = paramsMap.get("type");//展示类型
String pageNum = paramsMap.get("pageNum");
String pageSize = paramsMap.get("pageSize");
if ("".equals(pageNum) || null == pageNum) {
pageNum = "1";
}
if ("".equals(pageSize) || null == pageSize) {
pageSize = "20";
}
Page page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
QueryWrapper queryWrapper1 = new QueryWrapper<>();
queryWrapper1.eq("farm_id", farmId).eq("location_type", TokenSign.getWorkIdByJwtToken(httpServletRequest));
List baseLocations = locationMapper.selectList(queryWrapper1);
List ids = new ArrayList<>();
for (BaseLocation baseLocation : baseLocations) {
ids.add(baseLocation.getId());
}
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("farm_id", farmId).in("test_location_id", ids).orderByDesc("sub_date");
if ("0".equals(type)) {
queryWrapper.in("bill_status", 0, 1, 2, 3);
}
if ("1".equals(type)) {
queryWrapper.eq("bill_status", 0);
}
if ("2".equals(type)) {
queryWrapper.eq("bill_status", 1);
}
if ("3".equals(type)) {
queryWrapper.in("bill_status", 2, 3);
}
QueryWrapper queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("farm_id", farmId).in("test_location_id", ids).orderByDesc("sub_date");
queryWrapper2.eq("bill_status", 0);
return new Result(ResultCode.SUCCESS, pcrMapper.selectPage(page, queryWrapper),pcrMapper.selectCount(queryWrapper2));
}
@Override
public Result listById(HttpServletRequest httpServletRequest, Map paramsMap) {
String id = paramsMap.get("id");
BillPcr billPcr = pcrMapper.selectById(id);
return new Result(ResultCode.SUCCESS, billPcr);
}
@Override
public Result edit(HttpServletRequest httpServletRequest, Map paramsMap) throws ParseException {
String result = paramsMap.get("result");//1为合格2为异常
String id = paramsMap.get("id");
String farmId = paramsMap.get("farmId");
String date = paramsMap.get("date");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
if (StringUtils.isBlank(date)) {
date = sdf.format(new Date());
}
BillPcr billPcr = pcrMapper.selectById(id);
QueryWrapper processQueryWrapper = new QueryWrapper<>();
processQueryWrapper.eq("farm_id", farmId).eq("id", billPcr.getProcessId());
BaseProcess baseProcess = processMapper.selectOne(processQueryWrapper);//进程
QueryWrapper locationQueryWrapper = new QueryWrapper<>();
locationQueryWrapper.eq("farm_id", farmId).eq("id", billPcr.getTestLocationId());
BaseLocation baseLocation = locationMapper.selectOne(locationQueryWrapper);//当前pcr检测所在的位置
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("farm_id", farmId);
Configuration configuration = configurationMapper.selectOne(queryWrapper);
if (baseProcess.getProcessType() == 2 || baseProcess.getProcessType() == 1) {
return new Result(10001, "修改失败!该申请已提前结束或者被拒绝", false);
} else {
if (billPcr.getDestId() >= billPcr.getTestLocationId() || billPcr.getTestLocationId() == 9 || billPcr.getTestLocationId() == 10 || billPcr.getTestLocationId() == 11 || billPcr.getTestLocationId() == 6) { //说明当前不是目的地
if ("1".equals(result)) {
billPcr.setBillStatus(1);
billPcr.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
billPcr.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
billPcr.setTestLocation(baseLocation.getLocationName());
billPcr.setTestLocationId(baseLocation.getId());
billPcr.setCheckDate(sdf.parse(date));
billPcr.setPassDate(sdf.parse(sdf.format(new Date())));
billPcr.setQualifiedDate(configuration.getPcr());
//通过生成洗消记录
BillClean billClean = new BillClean();
billClean.setVistitType(billPcr.getVistitType());
billClean.setDestName(billPcr.getDestName());
billClean.setDestId(billPcr.getDestId());
billClean.setAdmissionUserName(billPcr.getAdmissionUserName());
billClean.setAdmissionUserId(billPcr.getAdmissionUserId());
billClean.setVistitDate(billPcr.getVistitDate());
billClean.setSubDate(LocalDateTime.now());
billClean.setFarmId(billPcr.getFarmId());
billClean.setPassUserName(billPcr.getPassUserName());
billClean.setPassDate(billPcr.getPassDate());
billClean.setPassUserId(billPcr.getPassUserId());
billClean.setProcessId(billPcr.getProcessId());
billClean.setTestLocation(baseLocation.getLocationName());
billClean.setTestLocationId(baseLocation.getId());
billClean.setPhone(billPcr.getPhone());
billClean.setImgStatus(0);
billClean.setCarNum(billPcr.getCarNum());
cleanMapper.insert(billClean);
baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
baseProcess.setCurrentLocation(baseProcess.getCurrentLocation() + "," + baseLocation.getLocationName());
baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() + "," + baseLocation.getId());
String status = baseProcess.getCurrentStatus();
String substring = status.substring(0, status.length() - 1);
baseProcess.setCurrentStatus(substring + "1," + 0);
processMapper.updateById(baseProcess);
pcrMapper.updateById(billPcr);
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(10);
Runnable task = new Runnable() {
@Override
public void run() {
//这里写业务
billPcr.setBillStatus(3);
pcrMapper.updateById(billPcr);
}
};
// 设定延迟时间(两小时后执行,单位为秒)
long delay = 60 * 60 * 2;
// 执行定时任务
scheduler.schedule(task, delay, TimeUnit.SECONDS);
return new Result(10000, "修改成功!", true);
} else {
billPcr.setBillStatus(2);
billPcr.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
billPcr.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
billPcr.setTestLocation(baseLocation.getLocationName());
billPcr.setTestLocationId(baseLocation.getId());
billPcr.setCheckDate(sdf.parse(date));
billPcr.setPassDate(sdf.parse(sdf.format(new Date())));
baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
String status = baseProcess.getCurrentStatus();
String substring = status.substring(0, status.length() - 1);
baseProcess.setCurrentStatus(substring + "2," + 0);
if (baseLocation.getId() == 1) {
//第一次检测不合格
billPcr.setPcrType(1);
baseProcess.setCurrentLocation(baseProcess.getCurrentLocation() + ",初级洗消站污区");
baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() + ",2");
}
if (baseLocation.getId() == 12) {
//环保车第一次不合格
billPcr.setPcrType(1);
baseProcess.setCurrentLocation(baseProcess.getCurrentLocation() + ",销售中转站");
baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() + ",2");
}
if (baseLocation.getId() == 15) {
//拉猪车第一次不合格
billPcr.setPcrType(1);
baseProcess.setCurrentLocation(baseProcess.getCurrentLocation() + ",销售中转站");
baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() + ",2");
}
if (baseLocation.getId() == 6) {
//饲料车第一次不合格
billPcr.setPcrType(1);
baseProcess.setCurrentLocation(baseProcess.getCurrentLocation() + ",车辆初级洗消站");
baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() + ",2");
}
if (baseLocation.getId() == 3) {
//第二次检测不合格
baseProcess.setProcessType(2);
baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
}
if (baseLocation.getId() == 4) {
//第三次不合格
baseProcess.setProcessType(2);
baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
}
processMapper.updateById(baseProcess);
pcrMapper.updateById(billPcr);
return new Result(10000, "修改成功!", true);
}
} else {
if ("1".equals(result)) {
billPcr.setBillStatus(1);
billPcr.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
billPcr.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
billPcr.setTestLocation(baseLocation.getLocationName());
billPcr.setTestLocationId(baseLocation.getId());
billPcr.setQualifiedDate(configuration.getPcr());
billPcr.setCheckDate(sdf.parse(date));
billPcr.setPassDate(sdf.parse(sdf.format(new Date())));
baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
String status = baseProcess.getCurrentStatus();
String substring = status.substring(0, status.length() - 1);
baseProcess.setCurrentStatus(substring + "1");
baseProcess.setProcessType(1);
processMapper.updateById(baseProcess);
pcrMapper.updateById(billPcr);
return new Result(10000, "修改成功!", true);
} else {
if (baseLocation.getId() == 1) {
//第一次检测不合格
billPcr.setPcrType(1);
baseProcess.setProcessType(2);
} else if (baseLocation.getId() == 12) {
//环保车检测不合格
billPcr.setPcrType(1);
baseProcess.setProcessType(2);
} else if (baseLocation.getId() == 15) {
//拉猪车检测不合格
billPcr.setPcrType(1);
baseProcess.setProcessType(2);
} else if (baseLocation.getId() == 6) {
//饲料车检测不合格
billPcr.setPcrType(1);
baseProcess.setProcessType(2);
} else {
baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
baseProcess.setProcessType(2);
}
baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
String status = baseProcess.getCurrentStatus();
String substring = status.substring(0, status.length() - 1);
baseProcess.setCurrentStatus(substring + "2," + 0);
billPcr.setBillStatus(2);
billPcr.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
billPcr.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
billPcr.setTestLocation(baseLocation.getLocationName());
billPcr.setTestLocationId(baseLocation.getId());
billPcr.setCheckDate(sdf.parse(date));
billPcr.setPassDate(sdf.parse(sdf.format(new Date())));
processMapper.updateById(baseProcess);
pcrMapper.updateById(billPcr);
return new Result(10000, "修改成功!", true);
}
}
}
}
private void xiugaiPro(BaseProcess baseProcess, BillPcr billPcr) {
baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + new Date());
baseProcess.setCurrentLocation(baseProcess.getCurrentLocation() + "," + billPcr.getTestLocation());
baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() + "," + billPcr.getTestLocationId());
baseProcess.setCurrentStatus(baseProcess.getCurrentStatus() + "," + 2);
}
public String add() {
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(10);
Runnable task = new Runnable() {
@Override
public void run() {
//这里写业务
System.out.println();
}
};
// 设定延迟时间(两小时后执行,单位为秒)
long delay = 3;
// 执行定时任务
scheduler.schedule(task, delay, TimeUnit.SECONDS);
System.out.println("完结");
return "成功";
}
}