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 "成功"; } }