package com.huimv.receive.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.FlowUtil;
import com.huimv.receive.common.utils.Result;
import com.huimv.receive.common.utils.ResultCode;
import com.huimv.receive.common.utils.UploadImage;
import com.huimv.receive.entity.*;
import com.huimv.receive.mapper.*;
import com.huimv.receive.service.IBillSamplingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.text.ParseException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Map;
/**
*
* 洗消表 服务实现类
*
*
* @author author
* @since 2024-03-11
*/
@Service
public class BillSamplingServiceImpl extends ServiceImpl implements IBillSamplingService {
@Autowired
private BillSamplingMapper billSamplingMapper;
@Autowired
private UploadImage uploadImage;
@Autowired
private BaseProcessMapper processMapper;
@Autowired
private BaseLocationMapper locationMapper;
@Autowired
private BillPcrMapper pcrMapper;
@Autowired
private BillCleanMapper cleanMapper;
@Autowired
private BillIsolateMapper isolateMapper;
@Autowired
private BillDryMapper dryMapper;
@Autowired
private BillCleanBeforeMapper billCleanBeforeMapper;
@Autowired
private BillGoodsInventoryMapper inventoryMapper;
@Override
public Result list(HttpServletRequest httpServletRequest, Map paramsMap) {
String farmId = paramsMap.get("farmId");
String type = paramsMap.get("type");//展示类型
String data = paramsMap.get("data");
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 queryWrapper = new QueryWrapper<>();
queryWrapper.in("test_location_id", TokenSign.getWorkIdByJwtToken(httpServletRequest)).orderByDesc("sub_date").eq("vistit_type",type);
if ("0".equals(data)) {
queryWrapper.in("bill_status", 0, 1, 2, 3);
}
if ("1".equals(data)) {
queryWrapper.eq("bill_status", 0);
}
if ("2".equals(data)) {
queryWrapper.eq("bill_status", 1);
}
if ("3".equals(data)) {
queryWrapper.in("bill_status", 2, 3);
}
QueryWrapper queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("vistit_type", type);
queryWrapper2.in("test_location_id", TokenSign.getWorkIdByJwtToken(httpServletRequest)).orderByDesc("sub_date");
queryWrapper2.eq("bill_status", 0);
return new Result(ResultCode.SUCCESS, billSamplingMapper.selectPage(page, queryWrapper), billSamplingMapper.selectCount(queryWrapper2));
}
@Override
public Result listById(HttpServletRequest httpServletRequest, Map paramsMap) {
String id = paramsMap.get("id");
BillSampling billPcr = billSamplingMapper.selectById(id);
return new Result(ResultCode.SUCCESS, billPcr);
}
@Override
public Result listPersonalSample(HttpServletRequest httpServletRequest, Map paramsMap) {
String farmId = paramsMap.get("farmId");
String pageNo = paramsMap.get("pageNum");
String pageSize = paramsMap.get("pageSize");
String vistitType = paramsMap.get("vistitType");
Integer userId = TokenSign.getMemberIdByJwtToken(httpServletRequest);
Page page = new Page<>(Integer.parseInt(pageNo),Integer.parseInt(pageSize));
LambdaQueryWrapper queryWrapper = new QueryWrapper().lambda()
.eq(BillSampling::getFarmId,farmId)
.eq(BillSampling::getAdmissionUserId, userId)
.eq(ObjectUtil.isNotEmpty(vistitType), BillSampling::getVistitType, vistitType)
.orderByDesc(BillSampling::getSubDate);
Page billSamplingPage = billSamplingMapper.selectPage(page,queryWrapper);
Integer count = billSamplingMapper.selectCount(queryWrapper);
return new Result(ResultCode.SUCCESS,billSamplingPage,count);
}
@Override
public Result edit(HttpServletRequest httpServletRequest, String farmId, String id, String date, MultipartFile img) throws ParseException, IOException {
String s = "";
s = uploadImage.getVideoCom(img);
if (s.equals("上传失败")) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new Result(10001, "视频上传失败", false);
}
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
BillSampling sampling = billSamplingMapper.selectById(id);
if (sampling.getBillStatus() != 0) {
return new Result(10001, "此条记录已被他人修改,请退出刷新查看!", false);
}
sampling.setImgUrl(s);
sampling.setImgStatus(1);
QueryWrapper processQueryWrapper = new QueryWrapper<>();
processQueryWrapper.eq("farm_id", farmId).eq("id", sampling.getProcessId());
BaseProcess baseProcess = processMapper.selectOne(processQueryWrapper);//进程
QueryWrapper locationQueryWrapper = new QueryWrapper<>();
locationQueryWrapper.eq("id", sampling.getTestLocationId());
BaseLocation baseLocation = locationMapper.selectOne(locationQueryWrapper);//当前pcr检测所在的位置
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[] split = substring1.split(",");
Integer nextId = Integer.parseInt(split[0]);
sampling.setBillStatus(1);
sampling.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
sampling.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
sampling.setTestLocation(baseLocation.getLocationName());
sampling.setTestLocationId(baseLocation.getId());
sampling.setCheckDate(LocalDateTime.parse(date, dateTimeFormatter));
sampling.setPassDate(LocalDateTime.now());
Object newObject = BillPcrServiceImpl.getNewObject(nextId, sampling.getDestName(), sampling.getDestId(), sampling.getAdmissionUserName(),
sampling.getAdmissionUserId(), sampling.getVistitDate(), sampling.getSubDate(),
sampling.getProcessId(), Integer.parseInt(sampling.getFarmId()), sampling.getTestLocation(), sampling.getTestLocationId(),
sampling.getVistitType(), sampling.getPhone(),sampling.getDepartureName(),sampling.getDepartureId());
if (nextId == 0) {
if (split.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 queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("id", strings[index + 2]);
BaseLocation location = locationMapper.selectOne(queryWrapper1);
FlowUtil flowUtil = new FlowUtil();
Object entity = flowUtil.getEntity(Integer.parseInt(split[1]), sampling.getVistitType(), sampling.getDestName()
, sampling.getDestId(), sampling.getAdmissionUserId(), sampling.getAdmissionUserName(), sampling.getPhone(),
sampling.getVistitDate(), location.getId(), location.getLocationName(), Integer.parseInt(farmId)
, baseProcess.getId(), sampling.getDepartureName(), sampling.getDepartureId());
if (Integer.parseInt(split[1]) == 1) {
//新增采样
BillSampling billSampling = (BillSampling) entity;
if (sampling.getVistitType() != 0) {
billSampling.setCarNum(sampling.getCarNum());
}
if (sampling.getVistitType() == 5) {
billSampling.setResource(sampling.getResource());
billSampling.setFeedImgUrl(sampling.getFeedImgUrl());
billSampling.setRemark(sampling.getRemark());
}
billSamplingMapper.insert(billSampling);
} else if (Integer.parseInt(split[1]) == 2) {
//新增pcr
BillPcr billClean = (BillPcr) entity;
if (sampling.getVistitType() != 0) {
billClean.setCarNum(sampling.getCarNum());
}
if (sampling.getVistitType() == 5) {
billClean.setResource(sampling.getResource());
billClean.setFeedImgUrl(sampling.getFeedImgUrl());
billClean.setRemark(sampling.getRemark());
}
pcrMapper.insert(billClean);
} else if (Integer.parseInt(split[1]) == 3) {
//新增洗澡
BillClean billClean = (BillClean) entity;
if (sampling.getVistitType() != 0) {
billClean.setCarNum(sampling.getCarNum());
}
if (sampling.getVistitType() == 5) {
billClean.setResource(sampling.getResource());
billClean.setFeedImgUrl(sampling.getFeedImgUrl());
billClean.setRemark(sampling.getRemark());
}
cleanMapper.insert(billClean);
} else if (Integer.parseInt(split[1]) == 4) {
//新增隔离
BillIsolate pcr = (BillIsolate) entity;
if (sampling.getVistitType() != 0) {
pcr.setCarNum(sampling.getCarNum());
}
if (sampling.getVistitType() == 5) {
pcr.setResource(sampling.getResource());
pcr.setFeedImgUrl(sampling.getFeedImgUrl());
pcr.setRemark(sampling.getRemark());
}
isolateMapper.insert(pcr);
} else if (Integer.parseInt(split[1]) == 5) {
BillDry billClean = (BillDry) entity;
if (sampling.getVistitType() != 0) {
billClean.setCarNum(sampling.getCarNum());
}
if (sampling.getVistitType() == 5) {
billClean.setResource(sampling.getResource());
billClean.setFeedImgUrl(sampling.getFeedImgUrl());
billClean.setRemark(sampling.getRemark());
}
dryMapper.insert(billClean);
//新增烘干
} else if (Integer.parseInt(split[1]) == 6) {
//新增洗澡前拍照
BillCleanBefore before = (BillCleanBefore) entity;
if (sampling.getVistitType() != 0) {
before.setCarNum(sampling.getCarNum());
}
if (sampling.getVistitType() == 5) {
before.setResource(sampling.getResource());
before.setFeedImgUrl(sampling.getFeedImgUrl());
before.setRemark(sampling.getRemark());
}
billCleanBeforeMapper.insert(before);
}else if (Integer.parseInt(split[1]) == 7) {
//新增洗澡前拍照
BillGoodsInventory before = (BillGoodsInventory) entity;
if (sampling.getVistitType() != 0) {
before.setCarNum(sampling.getCarNum());
}
if (sampling.getVistitType() == 5) {
before.setResource(sampling.getResource());
before.setFeedImgUrl(sampling.getFeedImgUrl());
before.setRemark(sampling.getRemark());
}
inventoryMapper.insert(before);
}
baseProcess.setCurrentFlowId(baseProcess.getCurrentFlowId() + "," + nextId + "," + split[1]);
Integer locationId = sampling.getTestLocationId();
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 (sampling.getVistitType() != 0) {
billSampling.setCarNum(sampling.getCarNum());
}
if (sampling.getVistitType() == 5) {
billSampling.setResource(sampling.getResource());
billSampling.setFeedImgUrl(sampling.getFeedImgUrl());
billSampling.setRemark(sampling.getRemark());
}
billSamplingMapper.insert(billSampling);
baseProcess.setCurrentFlowId(baseProcess.getCurrentFlowId() + "," + nextId);
}else if (nextId == 2) {
//新增pcr
BillPcr billClean = (BillPcr) newObject;
if (sampling.getVistitType() != 0) {
billClean.setCarNum(sampling.getCarNum());
}
if (sampling.getVistitType() == 5) {
billClean.setResource(sampling.getResource());
billClean.setFeedImgUrl(sampling.getFeedImgUrl());
billClean.setRemark(sampling.getRemark());
}
pcrMapper.insert(billClean);
baseProcess.setCurrentFlowId(baseProcess.getCurrentFlowId() + "," + nextId);
}else if (nextId == 3) {
//新增洗澡
BillClean billClean = (BillClean) newObject;
if (sampling.getVistitType() != 0) {
billClean.setCarNum(sampling.getCarNum());
}if (sampling.getVistitType() == 5) {
billClean.setResource(sampling.getResource());
billClean.setFeedImgUrl(sampling.getFeedImgUrl());
billClean.setRemark(sampling.getRemark());
}
cleanMapper.insert(billClean);
baseProcess.setCurrentFlowId(baseProcess.getCurrentFlowId() + "," + nextId);
}else if (nextId == 4) {
//新增隔离
BillIsolate pcr = (BillIsolate) newObject;
if (sampling.getVistitType() != 0) {
pcr.setCarNum(sampling.getCarNum());
}
if (sampling.getVistitType() == 5) {
pcr.setResource(sampling.getResource());
pcr.setFeedImgUrl(sampling.getFeedImgUrl());
pcr.setRemark(sampling.getRemark());
}
isolateMapper.insert(pcr);
baseProcess.setCurrentFlowId(baseProcess.getCurrentFlowId() + "," + nextId);
}else if (nextId == 5) {
BillDry billClean = (BillDry) newObject;
if (sampling.getVistitType() != 0) {
billClean.setCarNum(sampling.getCarNum());
}
if (sampling.getVistitType() == 5) {
billClean.setResource(sampling.getResource());
billClean.setFeedImgUrl(sampling.getFeedImgUrl());
billClean.setRemark(sampling.getRemark());
}
dryMapper.insert(billClean);
baseProcess.setCurrentFlowId(baseProcess.getCurrentFlowId() + "," + nextId);
//新增烘干
}else if (nextId == 6) {
//新增洗澡前拍照
BillCleanBefore before = (BillCleanBefore) newObject;
if (sampling.getVistitType() != 0) {
before.setCarNum(sampling.getCarNum());
}
if (sampling.getVistitType() == 5) {
before.setResource(sampling.getResource());
before.setFeedImgUrl(sampling.getFeedImgUrl());
before.setRemark(sampling.getRemark());
}
billCleanBeforeMapper.insert(before);
baseProcess.setCurrentFlowId(baseProcess.getCurrentFlowId() + "," + nextId);
}
else if (nextId == 7) {
//新增洗澡前拍照
BillGoodsInventory before = (BillGoodsInventory) newObject;
if (sampling.getVistitType() != 0) {
before.setCarNum(sampling.getCarNum());
}
if (sampling.getVistitType() == 5) {
before.setResource(sampling.getResource());
before.setFeedImgUrl(sampling.getFeedImgUrl());
before.setRemark(sampling.getRemark());
}
inventoryMapper.insert(before);
baseProcess.setCurrentFlowId(baseProcess.getCurrentFlowId() + "," + nextId);
}
baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + LocalDateTime.now().format(dateTimeFormatter));
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);
billSamplingMapper.updateById(sampling);
return new Result(10000, "修改成功!", true);
}
@Override
public Result listAll(HttpServletRequest httpServletRequest, Map paramsMap) {
String farmId = paramsMap.get("farmId");
String type = paramsMap.get("type");//展示类型
String data = paramsMap.get("data");
String pageNum = paramsMap.get("pageNum");
String pageSize = paramsMap.get("pageSize");
Page page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("farm_id", farmId).orderByDesc("sub_date").eq("vistit_type",type);
if ("0".equals(data)) {
queryWrapper.in("bill_status", 0, 1, 2, 3);
}
if ("1".equals(data)) {
queryWrapper.in("bill_status", 0,3);
}
if ("2".equals(data)) {
queryWrapper.eq("bill_status", 1);
}
return new Result(ResultCode.SUCCESS,billSamplingMapper.selectPage(page,queryWrapper));
}
public static void main(String[] args) {
String s = "0,35,0,36,0,38,0";
String[] split1 = s.split(",");
int a = 0;
for (int i = 0; i < split1.length; i++) {
if ("36".equals(split1[i])) {
a = i+1;
}
}
int i = 2 *(a - 2);
System.out.println(i);
String s1 = "2,2,2,1,0,0,0";
String s2 = s1.substring(0, i + 3);
System.out.println("s2:"+s2);
String[] split = s2.split(",");
String sb2 = "";
for (int j = 0; j < split.length; j++) {
if (j == split.length - 1) {
sb2 = sb2 + split[j].replaceAll(split[j], "2");
} else {
sb2 = split[j].replaceAll(split[j], "2") + "," + sb2;
}
}
sb2 = sb2 + s1.substring(i + 3);
StringBuilder sb = new StringBuilder(sb2);
sb.replace(i + 4, i + 5, "2");
sb.replace(i + 6, i + 7, "1");
System.out.println(sb.toString());
}
}