//package com.huimv.receive.timer;
//
//
//import cn.hutool.core.date.DateUtil;
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.baomidou.mybatisplus.core.toolkit.StringUtils;
//import com.huimv.receive.common.utils.FlowUtil;
//import com.huimv.receive.entity.*;
//import com.huimv.receive.service.*;
//import com.huimv.receive.service.impl.BillPcrServiceImpl;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.scheduling.annotation.EnableScheduling;
//import org.springframework.scheduling.annotation.Scheduled;
//
//import java.text.SimpleDateFormat;
//import java.util.Calendar;
//import java.util.Date;
//import java.util.List;
//
//
//@Configuration
//@EnableScheduling
//public  class SafeTimer {
//
//
//    @Autowired
//    private IBillPcrService pcrService;
//    @Autowired
//    private IBillIsolateService isolateService;
//    @Autowired
//    private IConfigurationService configurationService;
//
//    @Autowired
//    private ISysUserService sysUserService;
//    @Autowired
//    private IBaseProcessService processService;
//    @Autowired
//    private IBaseLocationService locationService;
//    @Autowired
//    private IBillCleanService cleanService;
//    @Autowired
//    private IBillDryService dryService;
//    @Autowired
//    private IBillCleanBeforeService beforeService;
//    @Autowired
//    private IBillSamplingService samplingService;
//    @Autowired
//    private IBillGoodsInventoryService inventoryService;
//
//
//    @Scheduled(cron = "0 0/1 * * * ? ")
//    private void getShenChan() throws Exception {
//        QueryWrapper<BillIsolate> queryWrapper = new QueryWrapper<>();
//        queryWrapper.eq("bill_status", 1);
//        List<BillIsolate> isolates = isolateService.list(queryWrapper);
//        Date date = new Date();
//        for (BillIsolate billIsolate : isolates) {
//            if (billIsolate.getIsolateEndDate().getTime() <= date.getTime()) {
//                billIsolate.setIsolateRealEndDate(date);
//                billIsolate.setIsolateRealDayNum(billIsolate.getIsolateDayNum());
//                billIsolate.setBillStatus(2);
//                billIsolate.setPassUserName("自然解除隔离");
//                billIsolate.setPassDate(date);
//                BaseProcess baseProcess = processService.getById(billIsolate.getProcessId());
//                QueryWrapper<BaseLocation> locationQueryWrapper = new QueryWrapper<>();
//                locationQueryWrapper.eq("id", billIsolate.getIsolateLocationId());
//                BaseLocation baseLocation = locationService.getOne(locationQueryWrapper);//当前隔离所在的位置
//
//                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//                String end = sdf.format(billIsolate.getIsolateEndDate());
//                String start = sdf.format(billIsolate.getIsolateStartDate());
//                String now = sdf.format(new Date());
//
//                String allLocationId = baseProcess.getAllLocationId();//所有的位置id
//                String allFlowId = baseProcess.getAllFlowId();//所有的流程id
//                String currentFlowId = baseProcess.getCurrentFlowId();//当前已经完成的流程id
//                String substring1 = allFlowId.substring(currentFlowId.length() + 1, allFlowId.length());
//                String[] splits = substring1.split(",");
//                Integer nextId = Integer.parseInt(splits[0]);
//                Object newObject = BillPcrServiceImpl.getNewObject(nextId, billIsolate.getDestName(), billIsolate.getDestId(), billIsolate.getAdmissionUserName(),
//                        billIsolate.getAdmissionUserId(), billIsolate.getVistitDate(), billIsolate.getSubDate(),
//                        billIsolate.getProcessId(), billIsolate.getFarmId(), billIsolate.getIsolateLocation(), billIsolate.getIsolateLocationId(),
//                        billIsolate.getVistitType(), billIsolate.getPhone(), billIsolate.getDepartureName(), billIsolate.getDepartureId()
//                        ,billIsolate.getMidId(),billIsolate.getMidName(),billIsolate.getFarmName());
//                if (nextId == 0) {
//                    if (splits.length == 1) {
//                        baseProcess.setProcessType(1);
//                        String[] strings = allLocationId.split(",");
//                        String ss2 = "";
//                        for (int i = 0; i < strings.length; i++) {
//                            strings[i].replaceAll(strings[i], "2");
//                            if (i == strings.length - 1) {
//                                ss2 = ss2 + strings[i].replaceAll(strings[i], "2");
//                            } else {
//                                ss2 = strings[i].replaceAll(strings[i], "2") + "," + ss2;
//                            }
//                        }
//                        baseProcess.setAllLocationStatus(ss2);
//                    } else {
//                        String[] strings = allLocationId.split(",");
//                        Integer index = 0;
//                        for (int i = 0; i < strings.length; i++) {
//                            if ((baseLocation.getId().toString()).equals(strings[i])) {
//                                index = i;
//                            }
//                        }
//                        QueryWrapper<BaseLocation> queryWrapper1 = new QueryWrapper();
//                        queryWrapper1.eq("id", strings[index + 2]);
//                        BaseLocation location = locationService.getOne(queryWrapper1);
//                        FlowUtil flowUtil = new FlowUtil();
//                        Object entity = flowUtil.getEntity(Integer.parseInt(splits[1]), billIsolate.getVistitType(), billIsolate.getDestName()
//                                , billIsolate.getDestId(), billIsolate.getAdmissionUserId(), billIsolate.getAdmissionUserName(), billIsolate.getPhone(),
//                                billIsolate.getVistitDate(), location.getId(), location.getLocationName(), billIsolate.getFarmId()
//                                , baseProcess.getId(), billIsolate.getDepartureName(), billIsolate.getDepartureId()
//                                ,billIsolate.getMidId(),billIsolate.getMidName(),billIsolate.getFarmName());
//                        if (Integer.parseInt(splits[1]) == 1) {
//                            //新增采样
//                            BillSampling billSampling = (BillSampling) entity;
//                            if (billIsolate.getVistitType() != 0) {
//                                billSampling.setCarNum(billIsolate.getCarNum());
//                            }
//                            if (billIsolate.getVistitType() == 5) {
//                                billSampling.setResource(billIsolate.getResource());
//                                billSampling.setFeedImgUrl(billIsolate.getFeedImgUrl());
//                                billSampling.setRemark(billIsolate.getRemark());
//                            }
//                            samplingService.save(billSampling);
//                        } else if (Integer.parseInt(splits[1]) == 2) {
//                            //新增pcr
//                            BillPcr billClean = (BillPcr) entity;
//                            if (billIsolate.getVistitType() != 0) {
//                                billClean.setCarNum(billIsolate.getCarNum());
//                            }
//                            if (billIsolate.getVistitType() == 5) {
//                                billClean.setResource(billIsolate.getResource());
//                                billClean.setFeedImgUrl(billIsolate.getFeedImgUrl());
//                                billClean.setRemark(billIsolate.getRemark());
//                            }
//                            pcrService.save(billClean);
//                        } else if (Integer.parseInt(splits[1]) == 3) {
//                            //新增洗澡
//                            BillClean billClean = (BillClean) entity;
//                            if (billIsolate.getVistitType() != 0) {
//                                billClean.setCarNum(billIsolate.getCarNum());
//                            }
//                            if (billIsolate.getVistitType() == 5) {
//                                billClean.setResource(billIsolate.getResource());
//                                billClean.setFeedImgUrl(billIsolate.getFeedImgUrl());
//                                billClean.setRemark(billIsolate.getRemark());
//                            }
//                            cleanService.save(billClean);
//                        } else if (Integer.parseInt(splits[1]) == 4) {
//                            //新增隔离
//                            BillIsolate pcr = (BillIsolate) entity;
//                            if (billIsolate.getVistitType() != 0) {
//                                pcr.setCarNum(billIsolate.getCarNum());
//                            }
//                            if (billIsolate.getVistitType() == 5) {
//                                pcr.setResource(billIsolate.getResource());
//                                pcr.setFeedImgUrl(billIsolate.getFeedImgUrl());
//                                pcr.setRemark(billIsolate.getRemark());
//                            }
//                            isolateService.save(pcr);
//                        } else if (Integer.parseInt(splits[1]) == 5) {
//                            BillDry billClean = (BillDry) entity;
//                            if (billIsolate.getVistitType() != 0) {
//                                billClean.setCarNum(billIsolate.getCarNum());
//                            }
//                            if (billIsolate.getVistitType() == 5) {
//                                billClean.setResource(billIsolate.getResource());
//                                billClean.setFeedImgUrl(billIsolate.getFeedImgUrl());
//                                billClean.setRemark(billIsolate.getRemark());
//                            }
//                            dryService.save(billClean);
//                            //新增烘干
//                        } else if (Integer.parseInt(splits[1]) == 6) {
//                            //新增洗澡前拍照
//                            BillCleanBefore before = (BillCleanBefore) entity;
//                            if (billIsolate.getVistitType() != 0) {
//                                before.setCarNum(billIsolate.getCarNum());
//                            }
//                            if (billIsolate.getVistitType() == 5) {
//                                before.setResource(billIsolate.getResource());
//                                before.setFeedImgUrl(billIsolate.getFeedImgUrl());
//                                before.setRemark(billIsolate.getRemark());
//                            }
//                            beforeService.save(before);
//                        } else if (Integer.parseInt(splits[1]) == 7) {
//                            //新增洗澡前拍照
//                            BillGoodsInventory before = (BillGoodsInventory) entity;
//                            if (billIsolate.getVistitType() != 0) {
//                                before.setCarNum(billIsolate.getCarNum());
//                            }
//                            if (billIsolate.getVistitType() == 5) {
//                                before.setResource(billIsolate.getResource());
//                                before.setFeedImgUrl(billIsolate.getFeedImgUrl());
//                                before.setRemark(billIsolate.getRemark());
//                            }
//                            inventoryService.save(before);
//                        }
//                        baseProcess.setCurrentFlowId(baseProcess.getCurrentFlowId() + "," + nextId + "," + splits[1]);
//                        Integer locationId = billIsolate.getIsolateLocationId();
//                        String[] split2 = allLocationId.split(",");
//                        int a=0;
//                        for (int i = 0; i < split2.length; i++) {
//                            if (locationId.toString().equals(split2[i])) {
//                                a = i + 1;
//                            }
//                        }
//                        int indexOf = 2 * (a - 2);//当前位置在所有流程位置中的下标
//
//                        String substring = baseProcess.getAllLocationStatus().substring(0, indexOf + 3);//截取已经过的位置状态
//                        String[] split1 = substring.split(",");
//                        String sb2 = "";
//                        for (int i = 0; i < split1.length; i++) {
//                            if (i == split1.length - 1) {
//                                sb2 = sb2 + split1[i].replaceAll(split1[i], "2");
//                            } else {
//                                sb2 = split1[i].replaceAll(split1[i], "2") + "," + sb2;
//                            }
//                        }
//                        sb2 = sb2 + baseProcess.getAllLocationStatus().substring(indexOf + 3);
//                        StringBuilder sb = new StringBuilder(sb2);
//                        sb.replace(indexOf + 4, indexOf + 5, "2");
//                        sb.replace(indexOf + 6, indexOf + 7, "1");
//                        baseProcess.setAllLocationStatus(sb.toString());
//                    }
//                } else if (nextId == 1) {
//                    //新增采样
//                    BillSampling billSampling = (BillSampling) newObject;
//                    if (billIsolate.getVistitType() != 0) {
//                        billSampling.setCarNum(billIsolate.getCarNum());
//                    }
//                    if (billIsolate.getVistitType() == 5) {
//                        billSampling.setResource(billIsolate.getResource());
//                        billSampling.setFeedImgUrl(billIsolate.getFeedImgUrl());
//                        billSampling.setRemark(billIsolate.getRemark());
//                    }
//
//                    samplingService.save(billSampling);
//                    baseProcess.setCurrentFlowId(baseProcess.getCurrentFlowId() + "," + nextId);
//                } else if (nextId == 2) {
//                    //新增pcr
//                    BillPcr pcr = (BillPcr) newObject;
//                    if (billIsolate.getVistitType() != 0) {
//                        pcr.setCarNum(billIsolate.getCarNum());
//                    }
//                    if (billIsolate.getVistitType() == 5) {
//                        pcr.setResource(billIsolate.getResource());
//                        pcr.setFeedImgUrl(billIsolate.getFeedImgUrl());
//                        pcr.setRemark(billIsolate.getRemark());
//                    }
//                    pcrService.save(pcr);
//                    baseProcess.setCurrentFlowId(baseProcess.getCurrentFlowId() + "," + nextId);
//                } else if (nextId == 3) {
//                    //新增洗澡
//                    BillClean pcr = (BillClean) newObject;
//                    if (billIsolate.getVistitType() != 0) {
//                        pcr.setCarNum(billIsolate.getCarNum());
//                    }
//                    if (billIsolate.getVistitType() == 5) {
//                        pcr.setResource(billIsolate.getResource());
//                        pcr.setFeedImgUrl(billIsolate.getFeedImgUrl());
//                        pcr.setRemark(billIsolate.getRemark());
//                    }
//                    cleanService.save(pcr);
//                    baseProcess.setCurrentFlowId(baseProcess.getCurrentFlowId() + "," + nextId);
//                } else if (nextId == 4) {
//                    //新增隔离
//                    BillIsolate pcr = (BillIsolate) newObject;
//                    if (billIsolate.getVistitType() != 0) {
//                        pcr.setCarNum(billIsolate.getCarNum());
//                    }
//                    if (billIsolate.getVistitType() == 5) {
//                        pcr.setResource(billIsolate.getResource());
//                        pcr.setFeedImgUrl(billIsolate.getFeedImgUrl());
//                        pcr.setRemark(billIsolate.getRemark());
//                    }
//
//                    isolateService.save(pcr);
//                    baseProcess.setCurrentFlowId(baseProcess.getCurrentFlowId() + "," + nextId);
//                } else if (nextId == 5) {
//                    BillDry pcr = (BillDry) newObject;
//                    if (billIsolate.getVistitType() != 0) {
//                        pcr.setCarNum(billIsolate.getCarNum());
//                    }
//                    if (billIsolate.getVistitType() == 5) {
//                        pcr.setResource(billIsolate.getResource());
//                        pcr.setFeedImgUrl(billIsolate.getFeedImgUrl());
//                        pcr.setRemark(billIsolate.getRemark());
//                    }
//                    dryService.save(pcr);
//                    baseProcess.setCurrentFlowId(baseProcess.getCurrentFlowId() + "," + nextId);
//                    //新增烘干
//                } else if (nextId == 6) {
//                    //新增洗澡前拍照
//                    BillCleanBefore before = (BillCleanBefore) newObject;
//                    if (billIsolate.getVistitType() != 0) {
//                        before.setCarNum(billIsolate.getCarNum());
//                    }
//                    if (billIsolate.getVistitType() == 5) {
//                        before.setResource(billIsolate.getResource());
//                        before.setFeedImgUrl(billIsolate.getFeedImgUrl());
//                        before.setRemark(billIsolate.getRemark());
//                    }
//                    beforeService.save(before);
//                    baseProcess.setCurrentFlowId(baseProcess.getCurrentFlowId() + "," + nextId);
//                } else if (nextId == 7) {
//                    //新增洗澡前拍照
//                    BillGoodsInventory before = (BillGoodsInventory) newObject;
//                    if (billIsolate.getVistitType() != 0) {
//                        before.setCarNum(billIsolate.getCarNum());
//                    }
//                    if (billIsolate.getVistitType() == 5) {
//                        before.setResource(billIsolate.getResource());
//                        before.setFeedImgUrl(billIsolate.getFeedImgUrl());
//                        before.setRemark(billIsolate.getRemark());
//                    }
//                    inventoryService.save(before);
//                    baseProcess.setCurrentFlowId(baseProcess.getCurrentFlowId() + "," + nextId);
//                }
//
//
//                billIsolate.setIsolateRealEndDate(new Date());
//                SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
//                Calendar cal1 = Calendar.getInstance();
//                Calendar cal2 = Calendar.getInstance();
//                Date startDate = sdf1.parse(start);
//                Date endDate = sdf1.parse(now);
//                cal1.setTime(startDate);
//                cal2.setTime(endDate);
//                long days = (cal2.getTimeInMillis() - cal1.getTimeInMillis()) / (1000 * 3600 * 24);
//                billIsolate.setIsolateRealDayNum(Long.toString(days));
//                billIsolate.setBillStatus(2);
//
//                baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + now);
//
//                String status = baseProcess.getCurrentStatus();
//                String substring = status.substring(0, status.length() - 1);
//                baseProcess.setCurrentStatus(substring + "1," + 0);
//
//
//                isolateService.updateById(billIsolate);
//                processService.updateById(baseProcess);
//            }
//        }
//    }
//
//    @Scheduled(cron = "0 0/1 * * * ? ")
//    private void pcr() throws Exception {
//        QueryWrapper<BillPcr> queryWrapper = new QueryWrapper<>();
//        queryWrapper.eq("bill_status", 1);
//        List<BillPcr> pcrs = pcrService.list(queryWrapper);
//        Date date = new Date();
//        for (BillPcr pcr : pcrs) {
//            Date subDate = pcr.getCheckDate();
//            // 将LocalDateTime转换为Date
//
//            if ((subDate.getTime() + pcr.getQualifiedDate() * 60 * 1000) <= date.getTime()) {
//                pcr.setBillStatus(3);
//                pcrService.updateById(pcr);
//            }
//        }
//    }
//
//    //计算年龄
//    @Scheduled(cron = "0 0 0 * * ? ")
//    private void getAge() {
//        System.out.println("开始");
//        List<SysUser> sysUsers = sysUserService.list();
//        for (SysUser sysUser : sysUsers) {
//            int i = DateUtil.ageOfNow(sysUser.getBirthday());
//            if (i != sysUser.getAge()) {
//                sysUser.setAge(i);
//                sysUserService.updateById(sysUser);
//            }
//        }
//    }
//
//    public static void main(String[] args) {
//        String s = "0,1,0,2,0,3,0";
//        String s1 = "2,2,2,1,0,0,0";
//        int indexOf = s.indexOf("2");//当前位置在所有流程位置中的下标
//        System.out.println(indexOf);
//        String substring = s1.substring(0, indexOf + 3);//截取已经过的位置状态
//        String[] split1 = substring.split(",");
//        String sb2 = "";
//        for (int i = 0; i < split1.length; i++) {
//            if (i == split1.length - 1) {
//                sb2 = sb2 + split1[i].replaceAll(split1[i], "2");
//            } else {
//                sb2 = split1[i].replaceAll(split1[i], "2") + "," + sb2;
//            }
//        }
//        sb2 = sb2 + s1.substring(indexOf + 3);
//        StringBuilder sb = new StringBuilder(sb2);
//        sb.replace(indexOf + 2, indexOf + 3, "2");
//        sb.replace(indexOf + 4, indexOf + 5, "1");
//        System.out.println(sb.toString());
//    }
//}
//
