|
|
|
|
@ -56,6 +56,8 @@ import java.text.DateFormat; |
|
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
|
import java.util.*; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
import java.util.zip.ZipEntry; |
|
|
|
|
import java.util.zip.ZipOutputStream; |
|
|
|
|
|
|
|
|
|
import static org.springblade.common.enums.DictBizEnum.GOODS_TYPE; |
|
|
|
|
|
|
|
|
|
@ -328,75 +330,75 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String, Object> selectEquipRepairCountByMonth(String deviceId) { |
|
|
|
|
String startDate = DateFormatUtils.format(CommonDateUtil.getCurrentYearStartTime(),"yyyy-MM-dd HH:mm:ss"); |
|
|
|
|
String endDate = DateFormatUtils.format(CommonDateUtil.getCurrentYearEndTime(),"yyyy-MM-dd HH:mm:ss"); |
|
|
|
|
List<String> monthList = CommonDateUtil.getMonthList(startDate,endDate,"yyyy-MM"); |
|
|
|
|
String startDate = DateFormatUtils.format(CommonDateUtil.getCurrentYearStartTime(), "yyyy-MM-dd HH:mm:ss"); |
|
|
|
|
String endDate = DateFormatUtils.format(CommonDateUtil.getCurrentYearEndTime(), "yyyy-MM-dd HH:mm:ss"); |
|
|
|
|
List<String> monthList = CommonDateUtil.getMonthList(startDate, endDate, "yyyy-MM"); |
|
|
|
|
List<Map<String, Object>> list = baseMapper.selectEquipRepairCountByMonth(deviceId); |
|
|
|
|
List<String> dataList = new ArrayList<>(); |
|
|
|
|
Map<String,String> dataMap = new HashMap<>(); |
|
|
|
|
for(Map<String,Object> map1 : list){ |
|
|
|
|
dataMap.put(map1.get("month").toString(),map1.get("duration").toString()); |
|
|
|
|
Map<String, String> dataMap = new HashMap<>(); |
|
|
|
|
for (Map<String, Object> map1 : list) { |
|
|
|
|
dataMap.put(map1.get("month").toString(), map1.get("duration").toString()); |
|
|
|
|
} |
|
|
|
|
for(String month : monthList){ |
|
|
|
|
if(null != dataMap.get(month)){ |
|
|
|
|
for (String month : monthList) { |
|
|
|
|
if (null != dataMap.get(month)) { |
|
|
|
|
dataList.add(dataMap.get(month)); |
|
|
|
|
}else{ |
|
|
|
|
} else { |
|
|
|
|
dataList.add("0"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
Map<String,Object> map = new HashMap<>(); |
|
|
|
|
map.put("date",monthList); |
|
|
|
|
map.put("data",dataList); |
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
map.put("date", monthList); |
|
|
|
|
map.put("data", dataList); |
|
|
|
|
return map; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String,Object> selectAverageFaultResponseTime(String startMonth,String endMonth) { |
|
|
|
|
public Map<String, Object> selectAverageFaultResponseTime(String startMonth, String endMonth) { |
|
|
|
|
String startDate = startMonth + "-01 00:00:00"; |
|
|
|
|
String endDate = endMonth + "-01 23:59:59"; |
|
|
|
|
List<String> monthList = CommonDateUtil.getMonthList(startDate,endDate,"yyyy-MM"); |
|
|
|
|
List<Map<String,Object>> list = baseMapper.selectAverageFaultResponseTime(monthList); |
|
|
|
|
List<String> monthList = CommonDateUtil.getMonthList(startDate, endDate, "yyyy-MM"); |
|
|
|
|
List<Map<String, Object>> list = baseMapper.selectAverageFaultResponseTime(monthList); |
|
|
|
|
List<String> dataList = new ArrayList<>(); |
|
|
|
|
Map<String,String> dataMap = new HashMap<>(); |
|
|
|
|
for(Map<String,Object> map1 : list){ |
|
|
|
|
dataMap.put(map1.get("month").toString(),map1.get("duration").toString()); |
|
|
|
|
Map<String, String> dataMap = new HashMap<>(); |
|
|
|
|
for (Map<String, Object> map1 : list) { |
|
|
|
|
dataMap.put(map1.get("month").toString(), map1.get("duration").toString()); |
|
|
|
|
} |
|
|
|
|
for(String month : monthList){ |
|
|
|
|
if(null != dataMap.get(month)){ |
|
|
|
|
for (String month : monthList) { |
|
|
|
|
if (null != dataMap.get(month)) { |
|
|
|
|
dataList.add(dataMap.get(month)); |
|
|
|
|
}else{ |
|
|
|
|
} else { |
|
|
|
|
dataList.add("0"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Map<String,Object> map = new HashMap<>(); |
|
|
|
|
map.put("date",monthList); |
|
|
|
|
map.put("data",dataList); |
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
map.put("date", monthList); |
|
|
|
|
map.put("data", dataList); |
|
|
|
|
return map; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String,Object> selectAverageFaultRepairTime(String startMonth,String endMonth) { |
|
|
|
|
public Map<String, Object> selectAverageFaultRepairTime(String startMonth, String endMonth) { |
|
|
|
|
String startDate = startMonth + "-01 00:00:00"; |
|
|
|
|
String endDate = endMonth + "-01 23:59:59"; |
|
|
|
|
List<String> monthList = CommonDateUtil.getMonthList(startDate,endDate,"yyyy-MM"); |
|
|
|
|
List<Map<String,Object>> list = baseMapper.selectAverageFaultRepairTime(monthList); |
|
|
|
|
List<String> monthList = CommonDateUtil.getMonthList(startDate, endDate, "yyyy-MM"); |
|
|
|
|
List<Map<String, Object>> list = baseMapper.selectAverageFaultRepairTime(monthList); |
|
|
|
|
List<String> dataList = new ArrayList<>(); |
|
|
|
|
Map<String,String> dataMap = new HashMap<>(); |
|
|
|
|
for(Map<String,Object> map1 : list){ |
|
|
|
|
dataMap.put(map1.get("month").toString(),map1.get("duration").toString()); |
|
|
|
|
Map<String, String> dataMap = new HashMap<>(); |
|
|
|
|
for (Map<String, Object> map1 : list) { |
|
|
|
|
dataMap.put(map1.get("month").toString(), map1.get("duration").toString()); |
|
|
|
|
} |
|
|
|
|
for(String month : monthList){ |
|
|
|
|
if(null != dataMap.get(month)){ |
|
|
|
|
for (String month : monthList) { |
|
|
|
|
if (null != dataMap.get(month)) { |
|
|
|
|
dataList.add(dataMap.get(month)); |
|
|
|
|
}else{ |
|
|
|
|
} else { |
|
|
|
|
dataList.add("0"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Map<String,Object> map = new HashMap<>(); |
|
|
|
|
map.put("date",monthList); |
|
|
|
|
map.put("data",dataList); |
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
map.put("date", monthList); |
|
|
|
|
map.put("data", dataList); |
|
|
|
|
return map; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -624,18 +626,18 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
Optional<Integer> isWarran = Optional.ofNullable(device.getIsWarran()); |
|
|
|
|
if (isWarran.isPresent()) { |
|
|
|
|
if (isWarran.get() == 1) { |
|
|
|
|
map.put("int", "--"); |
|
|
|
|
map.put("in", "--"); |
|
|
|
|
map.put("out", total); |
|
|
|
|
map.put("sel2", "√"); |
|
|
|
|
} else { |
|
|
|
|
map.put("int", total); |
|
|
|
|
map.put("in", total); |
|
|
|
|
map.put("out", "--"); |
|
|
|
|
map.put("sel1", "√"); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
map.put("int", "--"); |
|
|
|
|
map.put("in", "--"); |
|
|
|
|
map.put("out", "--"); |
|
|
|
|
map.put("sel2", null); |
|
|
|
|
map.put("sel2", "√"); |
|
|
|
|
map.put("sel1", null); |
|
|
|
|
} |
|
|
|
|
Optional<Integer> status = Optional.ofNullable(workOrder.getStatus()); |
|
|
|
|
@ -660,4 +662,107 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
out.close(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void batchReportService(List<WorkOrder> workOrderList, HttpServletResponse response) throws IOException { |
|
|
|
|
|
|
|
|
|
for (WorkOrder workOrder : workOrderList) { |
|
|
|
|
//数据获取
|
|
|
|
|
String templateFileName = "./src/main/resources/excel/WorkOrderServiceSheet.xlsx"; |
|
|
|
|
double total = 0.0; |
|
|
|
|
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); |
|
|
|
|
List<WorkOrderRepairMaterial> workOrderRepairMaterialList = workOrderRepairMaterialService.list(Wrappers.lambdaQuery(WorkOrderRepairMaterial.class).eq(WorkOrderRepairMaterial::getOrderId, workOrder.getId())); |
|
|
|
|
List<WorkOrderFillData> workOrderFillDataList = new ArrayList<>(); |
|
|
|
|
WorkOrderFillData workOrderFillData = new WorkOrderFillData(); |
|
|
|
|
for (WorkOrderRepairMaterial workOrderRepairMaterial : workOrderRepairMaterialList) { |
|
|
|
|
workOrderFillData.setMaterialName(workOrderRepairMaterial.getMaterialName()); |
|
|
|
|
workOrderFillData.setMaterialCount(workOrderRepairMaterial.getMaterialCount()); |
|
|
|
|
workOrderFillData.setMaterialPrice(workOrderRepairMaterial.getMaterialPrice()); |
|
|
|
|
double price = workOrderRepairMaterial.getMaterialPrice() / workOrderRepairMaterial.getMaterialCount(); |
|
|
|
|
workOrderFillData.setPrice(price); |
|
|
|
|
workOrderFillDataList.add(workOrderFillData); |
|
|
|
|
total += price; |
|
|
|
|
} |
|
|
|
|
ImageExcelData imageExcelData = new ImageExcelData(); |
|
|
|
|
imageExcelData.setUrl(new URL(workOrder.getSignatureUrl())); |
|
|
|
|
//获取签字图片
|
|
|
|
|
URL url = new URL(workOrder.getSignatureUrl()); |
|
|
|
|
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); |
|
|
|
|
httpURLConnection.setRequestMethod("GET"); |
|
|
|
|
httpURLConnection.setDoInput(true); |
|
|
|
|
InputStream inputStream = httpURLConnection.getInputStream(); |
|
|
|
|
BufferedImage image = ImageIO.read(inputStream); |
|
|
|
|
if (image != null) { |
|
|
|
|
System.out.println("图片加载成功"); |
|
|
|
|
} else { |
|
|
|
|
System.out.println("图片加载失败"); |
|
|
|
|
throw new IOException(); |
|
|
|
|
} |
|
|
|
|
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); |
|
|
|
|
ImageIO.write(image, "png", byteArrayOutputStream); // 将图片写入输出流
|
|
|
|
|
byte[] imageBytes = byteArrayOutputStream.toByteArray(); |
|
|
|
|
Double width = Double.valueOf(image.getWidth()); |
|
|
|
|
Double height = Double.valueOf(image.getHeight()); |
|
|
|
|
WriteCellData<Void> voidWriteCellData = TemplateExcelUtils.imageCells(imageBytes, width, height, 0.6, 1.9); |
|
|
|
|
User repairPerson = userService.getOne(Wrappers.lambdaQuery(User.class).eq(User::getId, workOrder.getRepairPerson())); |
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
User customer = userService.getOne(Wrappers.lambdaQuery(User.class).eq(User::getId, workOrder.getInformant())); |
|
|
|
|
map.put("customerName", customer.getRealName()); |
|
|
|
|
map.put("informant", customer.getRealName()); |
|
|
|
|
map.put("informantPhone", customer.getPhone()); |
|
|
|
|
map.put("address", customer.getAddress()); |
|
|
|
|
map.put("faultDescribe", workOrder.getFaultDescribe()); |
|
|
|
|
map.put("faultCause", workOrder.getFaultCause()); |
|
|
|
|
map.put("total", total); |
|
|
|
|
map.put("processMethod", workOrder.getProcessMethod()); |
|
|
|
|
map.put("repairPerson", repairPerson.getRealName()); |
|
|
|
|
map.put("repairPersonPhone", repairPerson.getPhone()); |
|
|
|
|
//转换日期格式
|
|
|
|
|
Date finishTime = workOrder.getFinishTime(); |
|
|
|
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日"); |
|
|
|
|
map.put("finishTime", simpleDateFormat.format(finishTime)); |
|
|
|
|
map.put("image", voidWriteCellData); |
|
|
|
|
Device device = deviceService.getOne(Wrappers.lambdaQuery(Device.class).eq(Device::getId, workOrder.getDeviceId())); |
|
|
|
|
Optional<Integer> isWarran = Optional.ofNullable(device.getIsWarran()); |
|
|
|
|
if (isWarran.isPresent()) { |
|
|
|
|
if (isWarran.get() == 1) { |
|
|
|
|
map.put("in", "--"); |
|
|
|
|
map.put("ou", total); |
|
|
|
|
map.put("sel2", "√"); |
|
|
|
|
} else { |
|
|
|
|
map.put("in", total); |
|
|
|
|
map.put("out", "--"); |
|
|
|
|
map.put("sel1", "√"); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
map.put("in", "--"); |
|
|
|
|
map.put("out", "--"); |
|
|
|
|
map.put("sel2", "√"); |
|
|
|
|
map.put("sel1", null); |
|
|
|
|
} |
|
|
|
|
Optional<Integer> status = Optional.ofNullable(workOrder.getStatus()); |
|
|
|
|
if (status.isPresent()) { |
|
|
|
|
if (status.get() == 202) { |
|
|
|
|
map.put("sel4", "√"); |
|
|
|
|
} else { |
|
|
|
|
map.put("sel3", "√"); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
map.put("sel4", null); |
|
|
|
|
map.put("sel3", null); |
|
|
|
|
} |
|
|
|
|
//写入Excel并导出
|
|
|
|
|
ZipOutputStream zos = new ZipOutputStream(response.getOutputStream()); |
|
|
|
|
String fileName = workOrder.getReportUnitName() + "运维服务单.xlsx"; |
|
|
|
|
zos.putNextEntry(new ZipEntry(fileName)); |
|
|
|
|
try (ExcelWriter excelWriter = EasyExcel.write(zos).withTemplate(templateFileName).build()) { |
|
|
|
|
WriteSheet writeSheet = EasyExcel.writerSheet().build(); |
|
|
|
|
excelWriter.fill(workOrderFillDataList, fillConfig, writeSheet); |
|
|
|
|
excelWriter.fill(map, writeSheet); |
|
|
|
|
excelWriter.finish(); |
|
|
|
|
zos.flush(); |
|
|
|
|
zos.closeEntry(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|