功能修改

master
sunjianxi 11 months ago
parent e12fc742e6
commit 68669a81b6
  1. 35
      src/main/java/org/springblade/modules/business/contraller/DeviceController.java
  2. 7
      src/main/java/org/springblade/modules/business/contraller/MaintenanceController.java
  3. 3
      src/main/java/org/springblade/modules/business/contraller/WorkOrderController.java
  4. 15
      src/main/java/org/springblade/modules/business/contraller/supplies/ApplyController.java
  5. 41
      src/main/java/org/springblade/modules/business/excel/CustomMergeStrategy.java
  6. 44
      src/main/java/org/springblade/modules/business/excel/DeviceImportExcel.java
  7. 7
      src/main/java/org/springblade/modules/business/excel/DeviceImporter.java
  8. 5
      src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskDetailMapper.java
  9. 23
      src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskDetailMapper.xml
  10. 3
      src/main/java/org/springblade/modules/business/pojo/entity/DeviceMaintenance.java
  11. 6
      src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenanceTask.java
  12. 18
      src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenanceTaskDetail.java
  13. 26
      src/main/java/org/springblade/modules/business/pojo/entity/maintenance/RepairGoodsOutputData.java
  14. 24
      src/main/java/org/springblade/modules/business/pojo/entity/maintenance/UnRepairGoodsOutputData.java
  15. 3
      src/main/java/org/springblade/modules/business/pojo/entity/supplies/Apply.java
  16. 3
      src/main/java/org/springblade/modules/business/pojo/entity/supplies/Goods.java
  17. 9
      src/main/java/org/springblade/modules/business/pojo/entity/workorder/WorkOrder.java
  18. 3
      src/main/java/org/springblade/modules/business/service/IDeviceService.java
  19. 3
      src/main/java/org/springblade/modules/business/service/IMaintenanceTaskDetailService.java
  20. 41
      src/main/java/org/springblade/modules/business/service/impl/DeviceServiceImpl.java
  21. 20
      src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java
  22. 350
      src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskDetailServiceImpl.java
  23. 2
      src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java
  24. 12
      src/main/java/org/springblade/modules/system/pojo/entity/Dept.java
  25. BIN
      src/main/resources/excel/MaintenanceTaskReport.xlsx
  26. BIN
      src/main/resources/excel/RepairService.xlsx

@ -22,6 +22,7 @@ import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.business.excel.DeviceExcel;
import org.springblade.modules.business.excel.DeviceImportExcel;
import org.springblade.modules.business.excel.DeviceImporter;
import org.springblade.modules.business.pojo.dto.DeviceDTO;
import org.springblade.modules.business.pojo.entity.Device;
@ -187,9 +188,9 @@ public class DeviceController extends BladeController {
*/
@PostMapping("/import-device")
@Operation(summary = "导入设备", description = "传入excel")
public R importDevice(MultipartFile file, Integer isCovered) {
DeviceImporter deviceImporter = new DeviceImporter(deviceService, isCovered == 1);
ExcelUtil.save(file, deviceImporter, DeviceExcel.class);
public R importDevice(MultipartFile file) {
DeviceImporter deviceImporter = new DeviceImporter(deviceService);
ExcelUtil.save(file, deviceImporter, DeviceImportExcel.class);
return R.success("操作成功");
}
@ -210,20 +211,20 @@ public class DeviceController extends BladeController {
@GetMapping("/export-template")
@Operation(summary = "导出模板")
public void exportDevice(HttpServletResponse response) {
List<DeviceExcel> list = new ArrayList<>();
DeviceExcel deviceExcel = new DeviceExcel();
deviceExcel.setCode("WX-20241017-01");
deviceExcel.setName("测试设备");
deviceExcel.setModel("MDP-456");
deviceExcel.setType("设备类型1");
deviceExcel.setPosition("种子常规检测室1");
deviceExcel.setSupplier("山东烁今");
deviceExcel.setProduceTime(new Date());
deviceExcel.setLimsName("测试实验室");
deviceExcel.setFloorName("三层");
deviceExcel.setRoomName("301");
list.add(deviceExcel);
ExcelUtil.export(response, "设备模板", "设备表", list, DeviceExcel.class);
List<DeviceImportExcel> list = new ArrayList<>();
// DeviceExcel deviceExcel = new DeviceExcel();
// deviceExcel.setCode("WX-20241017-01");
// deviceExcel.setName("测试设备");
// deviceExcel.setModel("MDP-456");
// deviceExcel.setType("设备类型1");
// deviceExcel.setPosition("种子常规检测室1");
// deviceExcel.setSupplier("山东烁今");
// deviceExcel.setProduceTime(new Date());
// deviceExcel.setLimsName("测试实验室");
// deviceExcel.setFloorName("三层");
// deviceExcel.setRoomName("301");
// list.add(deviceExcel);
ExcelUtil.export(response, "设备模板", "设备表", list, DeviceImportExcel.class);
}
}

@ -189,6 +189,7 @@ public class MaintenanceController extends BladeController {
MaintenanceTask taskOld = taskService.getById(task.getId());
taskOld.setSignUrl(task.getSignUrl());
taskOld.setRemark(task.getRemark());
taskOld.setInspectionConclusion(task.getInspectionConclusion());
taskService.updateById(taskOld);
return R.success();
@ -498,4 +499,10 @@ public class MaintenanceController extends BladeController {
public void maintenancePlanReport(@RequestBody MaintenancePlan maintenancePlan, HttpServletResponse response) throws IOException {
planDetailService.maintenancePlanReport(maintenancePlan, response);
}
@PostMapping("/repair-output-service")
@Operation(summary = "导出运维服务单", description = "导出运维服务单")
public void repairOutputService(@RequestBody MaintenanceTask task, HttpServletResponse response) throws IOException {
taskDetailService.repairOutputService(task, response);
}
}

@ -262,7 +262,8 @@ public class WorkOrderController extends BladeController {
messageService.saveMessage(workOrder.getRequirementCode(), "您已接收新的维修单,请尽快处理", workOrder.getRepairPerson(), 2);
}
// todo 审核通过
LogUtil.saveLog(workOrderOld.getRequirementCode(), WorkOrderStatusEnum.KF_ORDER_ALLOT.getName());
User user = userService.getById(workOrder.getRepairPerson());
LogUtil.saveLog(workOrderOld.getRequirementCode(), WorkOrderStatusEnum.KF_ORDER_ALLOT.getName() + ":" + user.getName());
return R.success("");
}

@ -11,14 +11,18 @@ import org.springblade.common.cache.UserCache;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.business.pojo.dto.supplies.ApplyDTO;
import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlan;
import org.springblade.modules.business.pojo.entity.supplies.Apply;
import org.springblade.modules.business.pojo.entity.supplies.ApplyDetail;
import org.springblade.modules.business.pojo.entity.supplies.Goods;
import org.springblade.modules.business.pojo.entity.workorder.WorkOrder;
import org.springblade.modules.business.service.IWorkOrderService;
import org.springblade.modules.business.service.supplies.IApplyDetailService;
import org.springblade.modules.business.service.supplies.IApplyService;
import org.springblade.modules.business.service.supplies.IGoodsService;
@ -43,6 +47,7 @@ public class ApplyController extends BladeController {
private final IApplyService applyService;
private final IApplyDetailService applyDetailService;
private final IGoodsService goodsService;
private final IWorkOrderService workOrderService;
/**
* 物品申领表 详情
@ -59,13 +64,23 @@ public class ApplyController extends BladeController {
*/
@GetMapping("/list")
public R<IPage<Apply>> list(ApplyDTO apply, Query query) {
BladeUser user = AuthUtil.getUser();
LambdaQueryWrapper<Apply> wrapper = Wrappers.lambdaQuery(Apply.class);
wrapper.orderByDesc(Apply::getCreateTime);
wrapper.eq(apply.getIsReturn() != null, Apply::getIsReturn, apply.getIsReturn());
wrapper.eq(StringUtils.isNotBlank(apply.getApplyUser()), Apply::getApplyUser, apply.getApplyUser());
if (!user.getRoleName().contains("administrator") && !user.getRoleName().contains("admin") && !user.getRoleName().contains("库管员")) {
wrapper.eq(Apply::getApplyUserId,user.getUserId());
}
IPage<Apply> pages = applyService.page(Condition.getPage(query), wrapper);
List<Apply> records = pages.getRecords();
if (CollectionUtil.isNotEmpty(records)) {
for(Apply record: records){
WorkOrder order = workOrderService.getById(record.getWorkId());
if(order != null){
record.setRequirementCode(order.getRequirementCode());
}
}
List<Long> ids = records.stream().map(Apply::getId).collect(Collectors.toList());
List<ApplyDetail> details = applyDetailService.list(Wrappers.lambdaQuery(ApplyDetail.class).in(ApplyDetail::getApplyId, ids));
for (Apply record : records) {

@ -0,0 +1,41 @@
package org.springblade.modules.business.excel;
import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.write.merge.AbstractMergeStrategy;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.RegionUtil;
import java.util.List;
public class CustomMergeStrategy extends AbstractMergeStrategy {
@Override
protected void merge(Sheet sheet, Cell cell, Head head, Integer relativeRowIndex) {
if (relativeRowIndex == null || relativeRowIndex == 0) {
return;
}
int rowIndex = cell.getRowIndex();
int colIndex = cell.getColumnIndex();
sheet = cell.getSheet();
Row preRow = sheet.getRow(rowIndex - 1);
Cell preCell = preRow.getCell(colIndex);// 获取上一行的该格
List<CellRangeAddress> list = sheet.getMergedRegions();
CellStyle cs = cell.getCellStyle();
cell.setCellStyle(cs);
for (int i = 0; i < list.size(); i++) {
CellRangeAddress cellRangeAddress = list.get(i);
if (cellRangeAddress.containsRow(preCell.getRowIndex()) && cellRangeAddress.containsColumn(preCell.getColumnIndex())) {
int lastColIndex = cellRangeAddress.getLastColumn();
int firstColIndex = cellRangeAddress.getFirstColumn();
CellRangeAddress cra = new CellRangeAddress(cell.getRowIndex(), cell.getRowIndex(), firstColIndex, lastColIndex);
sheet.addMergedRegion(cra);
RegionUtil.setBorderBottom(BorderStyle.THIN, cra, sheet);
RegionUtil.setBorderLeft(BorderStyle.THIN, cra, sheet);
RegionUtil.setBorderRight(BorderStyle.THIN, cra, sheet);
RegionUtil.setBorderTop(BorderStyle.THIN, cra, sheet);
return;
}
}
}
}

@ -0,0 +1,44 @@
package org.springblade.modules.business.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 设备表 Excel实体类
* @author BladeX
* @since 2024-10-14
*/
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class DeviceImportExcel implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@ExcelProperty("设备编号")
private String code;
@ExcelProperty("设备名称")
private String name;
@ExcelProperty("设备类型")
private String type;
@ExcelProperty({"巡检相关","巡检内容"})
private String checkContent;
@ExcelProperty({"巡检相关","工艺要求"})
private String craft;
@ExcelProperty("备注")
private String description;
}

@ -37,13 +37,12 @@ import java.util.List;
* @author Chill
*/
@RequiredArgsConstructor
public class DeviceImporter implements ExcelImporter<DeviceExcel> {
public class DeviceImporter implements ExcelImporter<DeviceImportExcel> {
private final IDeviceService service;
private final Boolean isCovered;
@Override
public void save(List<DeviceExcel> data) {
service.importGoods(data, isCovered);
public void save(List<DeviceImportExcel> data) {
service.importDevice(data);
}
}

@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Param;
import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTaskDetail;
import java.util.List;
import java.util.Map;
/**
* 维保任务详情 Mapper 接口
@ -17,4 +18,8 @@ public interface MaintenanceTaskDetailMapper extends BaseMapper<MaintenanceTaskD
List<MaintenanceTaskDetail> findListByDeviceId(@Param("deviceId")Long deviceId);
String findPeriod();
Map<String,String> getDeptContact(@Param("deptId")long deptId);
}

@ -15,4 +15,27 @@
a.is_deleted = 0
AND a.device_id = #{deviceId}
</select>
<select id="findPeriod" resultType="java.lang.String">
SELECT
case period
when 1 then '月'
when 2 then '季度'
else '年' end as "period"
FROM
lab_maintenance_task_detail
order by period limit 1
</select>
<select id="getDeptContact" resultType="map">
SELECT
a.`name` as "name",
a.phone as "phone"
FROM
blade_user a
LEFT JOIN blade_dept b ON a.dept_id = b.id
LEFT JOIN blade_role c ON a.role_id = c.id
WHERE
role_name = '实验室管理员'
AND a.dept_id = #{deptId}
limit 1
</select>
</mapper>

@ -2,6 +2,8 @@ package org.springblade.modules.business.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -36,6 +38,7 @@ public class DeviceMaintenance extends BaseEntity {
/**
* 巡检周期 1: 2 3半年
*/
@JsonSerialize(nullsUsing = NullSerializer.class)
private Integer period;
/**

@ -3,6 +3,8 @@ package org.springblade.modules.business.pojo.entity.maintenance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -114,6 +116,7 @@ public class MaintenanceTask extends BaseEntity {
/**
* 审批结果0不通过 1通过
*/
@JsonSerialize(nullsUsing = NullSerializer.class)
private Integer approveResult;
/**
@ -124,6 +127,7 @@ public class MaintenanceTask extends BaseEntity {
/**
* 审批人
*/
@JsonSerialize(nullsUsing = NullSerializer.class)
private Long approvePerson;
/**
@ -206,6 +210,7 @@ public class MaintenanceTask extends BaseEntity {
/**
* 差旅费
*/
@JsonSerialize(nullsUsing = NullSerializer.class)
private Double travelExpense;
/**
@ -216,5 +221,6 @@ public class MaintenanceTask extends BaseEntity {
/**
* 总价
*/
@JsonSerialize(nullsUsing = NullSerializer.class)
private Double totalPrice;
}

@ -3,6 +3,8 @@ package org.springblade.modules.business.pojo.entity.maintenance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -24,8 +26,21 @@ import java.util.List;
@Schema(description = "维保任务详细")
public class MaintenanceTaskDetail extends BaseEntity {
/**
* 任务id
*/
private Long taskId;
/**
* 计划id
*/
private Long planId;
/**
* 计划明细id
*/
private Long planDetailId;
/**
* 设备id
*/
@ -88,16 +103,19 @@ public class MaintenanceTaskDetail extends BaseEntity {
/**
* 维修价格
*/
@JsonSerialize(nullsUsing = NullSerializer.class)
private Double price;
/**
* 客户确认是否维修, 0:不维修 1维修
*/
@JsonSerialize(nullsUsing = NullSerializer.class)
private Integer isRepair;
/**
* 确认是否需要物资
*/
@JsonSerialize(nullsUsing = NullSerializer.class)
private Integer isNeed;
/**

@ -0,0 +1,26 @@
package org.springblade.modules.business.pojo.entity.maintenance;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.converters.bytearray.ByteArrayImageConverter;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
public class RepairGoodsOutputData {
private long no;
//物料名称
private String goodsName;
//数量
private Integer number;
//价格
private Double price;
private Double totalPrice;
}

@ -0,0 +1,24 @@
package org.springblade.modules.business.pojo.entity.maintenance;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
public class UnRepairGoodsOutputData {
private long no1;
//物料名称
private String goodsName1;
//数量
private Integer number1;
//价格
private Double price1;
private Double totalPrice1;
}

@ -97,4 +97,7 @@ public class Apply extends BaseEntity {
@TableField(exist = false)
List<ApplyDetail> details;
@TableField(exist = false)
private String requirementCode;;
}

@ -2,6 +2,8 @@ package org.springblade.modules.business.pojo.entity.supplies;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
@ -134,6 +136,7 @@ public class Goods extends BaseEntity {
/**
* 续订时间
*/
@JsonSerialize(nullsUsing = NullSerializer.class)
private Integer renewNum;
/**

@ -2,6 +2,8 @@ package org.springblade.modules.business.pojo.entity.workorder;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -52,6 +54,7 @@ public class WorkOrder extends BaseEntity {
/**
* 设备id
*/
@JsonSerialize(nullsUsing = NullSerializer.class)
private Long deviceId;
/**
@ -143,6 +146,7 @@ public class WorkOrder extends BaseEntity {
/**
* 是否需要申领物料(0否 1是)
*/
@JsonSerialize(nullsUsing = NullSerializer.class)
private Integer isNeedMaterial;
/**
@ -226,25 +230,30 @@ public class WorkOrder extends BaseEntity {
/**
* 折扣
*/
@JsonSerialize(nullsUsing = NullSerializer.class)
private Double discount;
/**
* 折扣后总价
*/
@JsonSerialize(nullsUsing = NullSerializer.class)
private Double discountPrice;
/**
* 维修类型
*/
@JsonSerialize(nullsUsing = NullSerializer.class)
private Integer repairType;
/**
* 人工费
*/
@JsonSerialize(nullsUsing = NullSerializer.class)
private Double laborCost;
/**
* 差旅费
*/
@JsonSerialize(nullsUsing = NullSerializer.class)
private Double travelExpense;
}

@ -3,6 +3,7 @@ package org.springblade.modules.business.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.modules.business.excel.DeviceImportExcel;
import org.springblade.modules.business.pojo.dto.DeviceDTO;
import org.springblade.modules.business.pojo.entity.Device;
import org.springblade.modules.business.excel.DeviceExcel;
@ -46,7 +47,7 @@ public interface IDeviceService extends BaseService<Device> {
List<PieStatVO> selectStatusCount(String startTime, String endTime);
void importGoods(List<DeviceExcel> data, Boolean isCovered);
void importDevice(List<DeviceImportExcel> data);
List<DeviceVO> limsList(Device device);

@ -21,4 +21,7 @@ public interface IMaintenanceTaskDetailService extends BaseService<MaintenanceTa
void maintenanceOutputService(MaintenanceTask task, HttpServletResponse response) throws IOException;
void batchMaintenanceOutputService(List<MaintenanceTask> task, HttpServletResponse response) throws IOException;
void repairOutputService(MaintenanceTask task, HttpServletResponse response) throws IOException;
}

@ -5,20 +5,22 @@ import com.aliyun.oss.ServiceException;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.zxing.WriterException;
import lombok.AllArgsConstructor;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springblade.common.cache.SysCache;
import org.springblade.common.constant.CommonConstant;
import org.springblade.common.utils.CommonUtil;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.business.excel.DeviceExcel;
import org.springblade.modules.business.excel.DeviceImportExcel;
import org.springblade.modules.business.mapper.DeviceMapper;
import org.springblade.modules.business.pojo.dto.DeviceDTO;
import org.springblade.modules.business.pojo.entity.Device;
@ -36,10 +38,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -152,7 +151,7 @@ public class DeviceServiceImpl extends BaseServiceImpl<DeviceMapper, Device> imp
return baseMapper.selectStatusCount(startTime, endTime);
}
@Override
/*@Override
public void importGoods(List<DeviceExcel> data, Boolean isCovered) {
List<Device> list = new ArrayList<>();
// 获取负责的实验室数据
@ -203,6 +202,36 @@ public class DeviceServiceImpl extends BaseServiceImpl<DeviceMapper, Device> imp
} else {
this.saveBatch(list);
}
}*/
@Override
public void importDevice(List<DeviceImportExcel> data) {
data.forEach(deviceExcel -> {
if(StringUtils.isEmpty(deviceExcel.getCode())){
throw new ServiceException("设备" + deviceExcel.getName() + "未填写设备编码,请修改后再上传!");
}
Device device = BeanUtil.copyProperties(deviceExcel, Device.class);
DeviceMaintenance deviceMaintenance = BeanUtil.copyProperties(deviceExcel, DeviceMaintenance.class);
if (device != null) {
//根据编码查询设备
Device oldDevice = this.getOne(Wrappers.lambdaQuery(Device.class).eq(Device::getCode,device.getCode()).eq(BaseEntity::getIsDeleted,0));
if (oldDevice != null) {
device.setId(oldDevice.getId());
this.saveOrUpdate(device);
} else {
device.setRunStatus(CommonConstant.DEVICE_RUN_STATUS_WORKING);
this.save(device);
}
if(deviceMaintenance != null){
if(oldDevice != null){
maintenanceService.remove(Wrappers.lambdaQuery(DeviceMaintenance.class).eq(DeviceMaintenance::getDeviceId,oldDevice.getId()));
}
deviceMaintenance.setDeviceId(device.getId());
maintenanceService.save(deviceMaintenance);
}
}
});
}
@Override

@ -10,7 +10,9 @@ import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletResponse;
import lombok.AllArgsConstructor;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springblade.common.cache.UserCache;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.DateUtil;
@ -294,17 +296,16 @@ public class MaintenancePlanServiceImpl extends BaseServiceImpl<MaintenancePlanM
List<User> maintenanceSupervisorList = userService.list(Wrappers.lambdaQuery(User.class).eq(User::getRoleId, roleId));
try {
for (User maintenanceSupervisor : maintenanceSupervisorList) {
Optional<String> phone = Optional.ofNullable(maintenanceSupervisor.getPhone());
if (phone.isEmpty()) {
if (StringUtils.isEmpty(maintenanceSupervisor.getPhone())) {
continue;
//TODO 当手机号为空时需要处理的逻辑
}
Optional<String> realName = Optional.ofNullable(maintenanceSupervisor.getRealName());
//TODO 当真实姓名为空时需要处理的逻辑
if (realName.isEmpty()) {
smsService.sendSms(phone.get(), "未实名");
smsService.sendSms(maintenanceSupervisor.getPhone(), "未实名");
} else {
smsService.sendSms(phone.get(), realName.get());
smsService.sendSms(maintenanceSupervisor.getPhone(), realName.get());
}
}
} catch (Exception e) {
@ -338,11 +339,11 @@ public class MaintenancePlanServiceImpl extends BaseServiceImpl<MaintenancePlanM
// 保存任务详情
List<MaintenanceTaskDetail> taskDetails = new ArrayList<>();
MaintenanceTaskDetail maintenanceTaskDetail = new MaintenanceTaskDetail();
List<MaintenanceTask> list = taskService.list(Wrappers.lambdaQuery(MaintenanceTask.class).eq(MaintenanceTask::getPlanId, planId));
for (MaintenancePlanDetail newPlanDetail : newDetails) {
MaintenanceTaskDetail taskDetail = new MaintenanceTaskDetail();
taskDetail.setTaskId(maintenanceTask.getId());
taskDetail.setPlanId(newPlanDetail.getPlanId());
taskDetail.setPlanDetailId(newPlanDetail.getId());
taskDetail.setFloorName(newPlanDetail.getFloorName());
taskDetail.setDeptId(newPlanDetail.getDeptId());
taskDetail.setDeptName(newPlanDetail.getDeptName());
@ -353,6 +354,13 @@ public class MaintenancePlanServiceImpl extends BaseServiceImpl<MaintenancePlanM
taskDetail.setDeviceId(newPlanDetail.getDeviceId());
taskDetail.setDeviceName(newPlanDetail.getDeviceName());
taskDetail.setStartTime(newPlanDetail.getStartTime());
taskDetail.setStatus(0);
//查询上次任务明细是否有异常不维修的,赋值给本次
MaintenanceTaskDetail oldTaskDetail = taskDetailService.getOne(Wrappers.lambdaQuery(MaintenanceTaskDetail.class).eq(MaintenanceTaskDetail::getPlanDetailId,newPlanDetail.getId()).eq(MaintenanceTaskDetail::getIsRepair,0).eq(BaseEntity::getStatus,1).eq(BaseEntity::getIsDeleted,0).orderByDesc(BaseEntity::getCreateTime).last("limit 1"));
if(oldTaskDetail != null){
taskDetail.setIsRepair(0);
taskDetail.setStatus(1);
}
taskDetails.add(taskDetail);
}
taskDetailService.saveBatch(taskDetails);

@ -3,19 +3,31 @@ package org.springblade.modules.business.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillConfig;
import com.alibaba.excel.write.metadata.fill.FillWrapper;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.modules.business.excel.CustomMergeStrategy;
import org.springblade.modules.business.excel.TemplateExcelUtils;
import org.springblade.modules.business.mapper.MaintenanceTaskDetailMapper;
import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceOutputData;
import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTask;
import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTaskDetail;
import org.springblade.modules.business.pojo.entity.MaintenanceTaskDetailGoods;
import org.springblade.modules.business.pojo.entity.maintenance.*;
import org.springblade.modules.business.service.IMaintenanceApplyGoodsService;
import org.springblade.modules.business.service.IMaintenanceTaskDetailService;
import org.springblade.modules.system.pojo.entity.User;
import org.springblade.modules.system.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.imageio.ImageIO;
@ -31,6 +43,7 @@ import java.net.URL;
import java.net.URLConnection;
import java.util.*;
import java.util.List;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@ -43,6 +56,11 @@ import java.util.zip.ZipOutputStream;
@Service
public class MaintenanceTaskDetailServiceImpl extends BaseServiceImpl<MaintenanceTaskDetailMapper, MaintenanceTaskDetail> implements IMaintenanceTaskDetailService {
@Autowired
private IUserService userService;
@Autowired
private IMaintenanceApplyGoodsService maintenanceApplyGoodsService;
@Override
public List<MaintenanceTaskDetail> findListByDeviceId(Long deviceId) {
@ -55,14 +73,35 @@ public class MaintenanceTaskDetailServiceImpl extends BaseServiceImpl<Maintenanc
String templateFile = "MaintenanceTaskReport.xlsx";
InputStream fileInputStream = this.getClass().getClassLoader().getResourceAsStream("excel" + "/" + templateFile);
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
Map<String, Object> map = new HashMap<>();
map.put("taskName", task.getDeptName());
map.put("address", task.getDeptName());
map.put("taskContent", task.getTaskContent());
map.put("serviceManName", task.getServicemanName());
Map<String, Object> map0 = new HashMap<>();
map0.put("taskName", task.getDeptName());
String period = baseMapper.findPeriod();
map0.put("period",period + "度报告");
map0.put("time", DateFormatUtils.format(task.getFinishTime(),"yyyy年MM月dd日"));
map0.put("taskCode", task.getTaskCode());
Map<String, Object> map1 = new HashMap<>();
map1.put("taskName", task.getDeptName());
map1.put("address", task.getDeptName());
map1.put("taskContent", task.getTaskContent());
Map<String, Object> map2 = new HashMap<>();
map2.put("taskName", task.getDeptName());
map2.put("address", task.getDeptName());
map2.put("inspectionConclusion", task.getInspectionConclusion());
map2.put("signatureTime",task.getSignatureTime() != null ? DateFormatUtils.format(task.getSignatureTime(),"yyyy年MM月dd日"): "");
//获取客户联系人、联系电话
Map<String,String> cusMap = baseMapper.getDeptContact(task.getDeptId());
if(CollectionUtils.isNotEmpty(cusMap)){
map2.put("contact",cusMap.get("name")); //联系人
map2.put("phone",cusMap.get("phone")); //联系方式
}
List<MaintenanceTaskDetail> maintenanceTaskDetailList = baseMapper.selectList(Wrappers.lambdaQuery(MaintenanceTaskDetail.class).eq(MaintenanceTaskDetail::getTaskId, task.getId()));
List<MaintenanceOutputData> maintenanceOutputDataList = new ArrayList<>();
List<MaintenanceOutputData> maintenanceOutputDataList1 = new ArrayList<>();
long no = 0;
long no1 = 0;
for (MaintenanceTaskDetail maintenanceTaskDetail : maintenanceTaskDetailList) {
no++;
MaintenanceOutputData maintenanceOutputData = new MaintenanceOutputData();
@ -101,33 +140,55 @@ public class MaintenanceTaskDetailServiceImpl extends BaseServiceImpl<Maintenanc
} else {
maintenanceOutputData.setImage1(null);
}
// if (StringUtils.isNotBlank(maintenanceTaskDetail.getSignUrl())) {
// try {
// URL url = new URL(maintenanceTaskDetail.getSignUrl());
// HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
// httpURLConnection.setRequestMethod("GET");
// httpURLConnection.setDoInput(true);
// InputStream inputStream = httpURLConnection.getInputStream();
// BufferedImage image = ImageIO.read(inputStream);
// ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
// ImageIO.write(image, "jpg", arrayOutputStream);
// byte[] bytes = arrayOutputStream.toByteArray();
// maintenanceOutputData.setImage2(bytes);
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
//
// } else {
// maintenanceOutputData.setImage2(null);
// }
maintenanceOutputDataList.add(maintenanceOutputData);
if(maintenanceTaskDetail.getStatus() == 1){
no1++;
MaintenanceOutputData maintenanceOutputData1 = BeanUtil.copyProperties(maintenanceOutputData,MaintenanceOutputData.class);
maintenanceOutputData1.setNo(no1);
maintenanceOutputDataList1.add(maintenanceOutputData1);
}
}
//获取签字图片
if (StringUtils.isNotBlank(task.getSignatureUrl())) {
try {
//获取图片
URL url = new URL(task.getSignatureUrl());
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("GET");
httpURLConnection.setDoInput(true);
InputStream inputStream = httpURLConnection.getInputStream();
BufferedImage image = ImageIO.read(inputStream);
ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
ImageIO.write(image, "png", arrayOutputStream);
byte[] bytes = arrayOutputStream.toByteArray();
Double width = Double.valueOf(image.getWidth());
Double height = Double.valueOf(image.getHeight());
WriteCellData<Void> voidWriteCellData = TemplateExcelUtils.imageCells(bytes, width, height, 0.6, 1.9);
map2.put("image", voidWriteCellData);
} catch (Exception e) {
throw new RuntimeException(e);
}
} else {
map2.put("image",null);
}
//将数据导出到Excel
ServletOutputStream outputStream = response.getOutputStream();
try (ExcelWriter excelWriter = EasyExcel.write(outputStream).withTemplate(fileInputStream).build()) {
WriteSheet writeSheet = EasyExcel.writerSheet().build();
excelWriter.fill(maintenanceOutputDataList, fillConfig, writeSheet);
excelWriter.fill(map, writeSheet);
WriteSheet writeSheet0 = EasyExcel.writerSheet(0).build();
excelWriter.fill(map0, writeSheet0);
WriteSheet writeSheet1 = EasyExcel.writerSheet(1).build();
excelWriter.fill(maintenanceOutputDataList, fillConfig, writeSheet1);
excelWriter.fill(map1, writeSheet1);
WriteSheet writeSheet2 = EasyExcel.writerSheet(2).build();
excelWriter.fill(maintenanceOutputDataList1, fillConfig, writeSheet2);
WriteSheet writeSheet3 = EasyExcel.writerSheet(3).build();
excelWriter.fill(map2, writeSheet3);
excelWriter.finish();
outputStream.flush();
outputStream.close();
@ -141,14 +202,36 @@ public class MaintenanceTaskDetailServiceImpl extends BaseServiceImpl<Maintenanc
String templateFile = "MaintenanceTaskReport.xlsx";
InputStream fileInputStream = this.getClass().getClassLoader().getResourceAsStream("excel" + "/" + templateFile);
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
Map<String, Object> map = new HashMap<>();
map.put("taskName", task.getDeptName());
map.put("address", task.getDeptName());
map.put("taskContent", task.getTaskContent());
map.put("serviceManName", task.getServicemanName());
Map<String, Object> map0 = new HashMap<>();
map0.put("taskName", task.getDeptName());
String period = baseMapper.findPeriod();
map0.put("period",period + "度报告");
map0.put("time", DateFormatUtils.format(task.getFinishTime(),"yyyy年MM月dd日"));
map0.put("taskCode", task.getTaskCode());
Map<String, Object> map1 = new HashMap<>();
map1.put("taskName", task.getDeptName());
map1.put("address", task.getDeptName());
map1.put("taskContent", task.getTaskContent());
Map<String, Object> map2 = new HashMap<>();
map2.put("taskName", task.getDeptName());
map2.put("address", task.getDeptName());
map2.put("inspectionConclusion", task.getInspectionConclusion());
map2.put("signatureTime",task.getSignatureTime() != null ? DateFormatUtils.format(task.getSignatureTime(),"yyyy年MM月dd日"): "");
//获取客户联系人、联系电话
Map<String,String> cusMap = baseMapper.getDeptContact(task.getDeptId());
if(CollectionUtils.isNotEmpty(cusMap)){
map2.put("contact",cusMap.get("name")); //联系人
map2.put("phone",cusMap.get("phone")); //联系方式
}
List<MaintenanceTaskDetail> maintenanceTaskDetailList = baseMapper.selectList(Wrappers.lambdaQuery(MaintenanceTaskDetail.class).eq(MaintenanceTaskDetail::getTaskId, task.getId()));
List<MaintenanceOutputData> maintenanceOutputDataList = new ArrayList<>();
List<MaintenanceOutputData> maintenanceOutputDataList1 = new ArrayList<>();
long no = 0;
long no1 = 0;
for (MaintenanceTaskDetail maintenanceTaskDetail : maintenanceTaskDetailList) {
no++;
MaintenanceOutputData maintenanceOutputData = new MaintenanceOutputData();
@ -187,40 +270,191 @@ public class MaintenanceTaskDetailServiceImpl extends BaseServiceImpl<Maintenanc
} else {
maintenanceOutputData.setImage1(null);
}
//获取签字照片
// if (StringUtils.isNotBlank(maintenanceTaskDetail.getSignUrl())) {
// try {
// URL url = new URL(maintenanceTaskDetail.getSignUrl());
// HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
// httpURLConnection.setRequestMethod("GET");
// httpURLConnection.setDoInput(true);
// InputStream inputStream = httpURLConnection.getInputStream();
// BufferedImage image = ImageIO.read(inputStream);
// ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
// ImageIO.write(image, "jpg", arrayOutputStream);
// byte[] bytes = arrayOutputStream.toByteArray();
// maintenanceOutputData.setImage2(bytes);
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
//
// } else {
// maintenanceOutputData.setImage2(null);
// }
maintenanceOutputDataList.add(maintenanceOutputData);
if(maintenanceTaskDetail.getStatus() == 1){
no1++;
MaintenanceOutputData maintenanceOutputData1 = BeanUtil.copyProperties(maintenanceOutputData,MaintenanceOutputData.class);
maintenanceOutputData1.setNo(no1);
maintenanceOutputDataList1.add(maintenanceOutputData1);
}
}
//获取签字图片
if (StringUtils.isNotBlank(task.getSignatureUrl())) {
try {
//获取图片
URL url = new URL(task.getSignatureUrl());
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("GET");
httpURLConnection.setDoInput(true);
InputStream inputStream = httpURLConnection.getInputStream();
BufferedImage image = ImageIO.read(inputStream);
ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
ImageIO.write(image, "png", arrayOutputStream);
byte[] bytes = arrayOutputStream.toByteArray();
Double width = Double.valueOf(image.getWidth());
Double height = Double.valueOf(image.getHeight());
WriteCellData<Void> voidWriteCellData = TemplateExcelUtils.imageCells(bytes, width, height, 0.6, 1.9);
map2.put("image", voidWriteCellData);
} catch (Exception e) {
throw new RuntimeException(e);
}
} else {
map2.put("image",null);
}
//将数据导出到Excel
ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());
String fileName = task.getTaskCode() + "巡检报告.xlsx";
zos.putNextEntry(new ZipEntry(fileName));
try (ExcelWriter excelWriter = EasyExcel.write(zos).withTemplate(fileInputStream).build()) {
WriteSheet writeSheet = EasyExcel.writerSheet().build();
excelWriter.fill(maintenanceOutputDataList, fillConfig, writeSheet);
excelWriter.fill(map, writeSheet);
WriteSheet writeSheet0 = EasyExcel.writerSheet(0).build();
excelWriter.fill(map0, writeSheet0);
WriteSheet writeSheet1 = EasyExcel.writerSheet(1).build();
excelWriter.fill(maintenanceOutputDataList, fillConfig, writeSheet1);
excelWriter.fill(map1, writeSheet1);
WriteSheet writeSheet2 = EasyExcel.writerSheet(2).build();
excelWriter.fill(maintenanceOutputDataList1, fillConfig, writeSheet2);
WriteSheet writeSheet3 = EasyExcel.writerSheet(3).build();
excelWriter.fill(map2, writeSheet3);
excelWriter.finish();
zos.flush();
zos.closeEntry();
}
}
}
@Override
public void repairOutputService(MaintenanceTask task, HttpServletResponse response) throws IOException {
//数据获取
String templateFile = "RepairService.xlsx";
InputStream fileInputStream = this.getClass().getClassLoader().getResourceAsStream("excel" + "/" + templateFile);
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
Map<String, Object> map0 = new HashMap<>();
map0.put("taskName", task.getDeptName()); //客户名称
map0.put("address", task.getDeptName()); //地址
//获取客户联系人、联系电话
Map<String,String> cusMap = baseMapper.getDeptContact(task.getDeptId());
if(CollectionUtils.isNotEmpty(cusMap)){
map0.put("contact",cusMap.get("name")); //联系人
map0.put("phone",cusMap.get("phone")); //联系方式
}
map0.put("servicemanName", task.getServicemanName()); //维修工程师
map0.put("inspectionConclusion", task.getInspectionConclusion()); //维修结论
if(task.getServicemanId() != null){
User serviceman = userService.getOne(Wrappers.lambdaQuery(User.class).eq(User::getId, task.getServicemanId()));
map0.put("servicemanPhone", serviceman.getPhone()); //维修工程师联系方式
}
map0.put("faultDescribe",task.getFaultDescribe()); //故障现象
map0.put("faultCause",task.getFaultCause()); //故障原因
map0.put("travelExpense",task.getTravelExpense()==null?0:task.getTravelExpense()); //维修差旅费
map0.put("processingResult",task.getProcessingResult()); //处理结果
map0.put("finishTime",task.getFinishTime() != null ? DateFormatUtils.format(task.getFinishTime(),"yyyy年MM月dd日") : ""); //维修结束时间
Map<String, Object> map1 = new HashMap<>();
map1.put("taskName", task.getDeptName());
map1.put("address", task.getDeptName());
if(CollectionUtils.isNotEmpty(cusMap)){
map1.put("contact",cusMap.get("name")); //联系人
map1.put("phone",cusMap.get("phone")); //联系方式
}
map1.put("inspectionConclusion", task.getInspectionConclusion());
map1.put("signatureTime",task.getSignatureTime() != null ? DateFormatUtils.format(task.getSignatureTime(),"yyyy年MM月dd日"): ""); //客户签字时间
List<RepairGoodsOutputData> repairGoodsList = new ArrayList<>();
List<RepairGoodsOutputData> unRepairGoodsList = new ArrayList<>();
long no = 0;
long no1 = 0;
double total = 0.0;
double total1 = 0.0;
List<MaintenanceTaskDetail> taskDetailList = this.list(Wrappers.lambdaQuery(MaintenanceTaskDetail.class).eq(MaintenanceTaskDetail::getTaskId,task.getId()).eq(BaseEntity::getIsDeleted,0));
if(CollectionUtils.isNotEmpty(taskDetailList)){
Map<Integer,List<MaintenanceTaskDetail>> taskDetailMap = taskDetailList.stream().collect(Collectors.groupingBy(MaintenanceTaskDetail::getIsRepair));
for (Map.Entry<Integer, List<MaintenanceTaskDetail>> entry : taskDetailMap.entrySet()) {
if(entry.getKey() == 1){
for(MaintenanceTaskDetail detail : entry.getValue()){
List<MaintenanceTaskDetailGoods> list = maintenanceApplyGoodsService.list(Wrappers.lambdaQuery(MaintenanceTaskDetailGoods.class).eq(MaintenanceTaskDetailGoods::getParentId,detail.getId()).eq(BaseEntity::getIsDeleted,0));
if(CollectionUtils.isNotEmpty(list)){
for(MaintenanceTaskDetailGoods goods : list){
no++;
RepairGoodsOutputData repairGoodsOutputData = new RepairGoodsOutputData();
repairGoodsOutputData.setNo(no);
repairGoodsOutputData.setGoodsName(goods.getGoodsName());
repairGoodsOutputData.setNumber(goods.getNumber());
repairGoodsOutputData.setPrice(goods.getPrice());
repairGoodsOutputData.setTotalPrice(goods.getNumber() * goods.getPrice());
repairGoodsList.add(repairGoodsOutputData);
total+=goods.getNumber() * goods.getPrice();
}
}
}
}else{
for(MaintenanceTaskDetail detail : entry.getValue()){
List<MaintenanceTaskDetailGoods> list = maintenanceApplyGoodsService.list(Wrappers.lambdaQuery(MaintenanceTaskDetailGoods.class).eq(MaintenanceTaskDetailGoods::getParentId,detail.getId()).eq(BaseEntity::getIsDeleted,0));
if(CollectionUtils.isNotEmpty(list)){
for(MaintenanceTaskDetailGoods goods : list){
no1++;
RepairGoodsOutputData unRepairGoodsOutputData = new RepairGoodsOutputData();
unRepairGoodsOutputData.setNo(no1);
unRepairGoodsOutputData.setGoodsName(goods.getGoodsName());
unRepairGoodsOutputData.setNumber(goods.getNumber());
unRepairGoodsOutputData.setPrice(goods.getPrice());
unRepairGoodsOutputData.setTotalPrice(goods.getNumber() * goods.getPrice());
unRepairGoodsList.add(unRepairGoodsOutputData);
total1+=goods.getNumber() * goods.getPrice();
}
}
}
}
}
}
map0.put("total",total); //维修材料费用
map0.put("repairTotal", (task.getTravelExpense() == null ? 0.0 : task.getTravelExpense()) + total); //维修费总计
map0.put("total1",total1); //未维修项目材料费用
//获取签字图片
if (StringUtils.isNotBlank(task.getSignatureUrl())) {
try {
//获取图片
URL url = new URL(task.getSignatureUrl());
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("GET");
httpURLConnection.setDoInput(true);
InputStream inputStream = httpURLConnection.getInputStream();
BufferedImage image = ImageIO.read(inputStream);
ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
ImageIO.write(image, "png", arrayOutputStream);
byte[] bytes = arrayOutputStream.toByteArray();
Double width = Double.valueOf(image.getWidth());
Double height = Double.valueOf(image.getHeight());
WriteCellData<Void> voidWriteCellData = TemplateExcelUtils.imageCells(bytes, width, height, 0.6, 1.9);
map0.put("image", voidWriteCellData);
map1.put("image", voidWriteCellData);
} catch (Exception e) {
throw new RuntimeException(e);
}
} else {
map0.put("image",null);
map1.put("image",null);
}
//将数据导出到Excel
ServletOutputStream outputStream = response.getOutputStream();
try (ExcelWriter excelWriter = EasyExcel.write(outputStream).withTemplate(fileInputStream).build()) {
WriteSheet writeSheet0 = EasyExcel.writerSheet(0).registerWriteHandler(new CustomMergeStrategy()).build();
excelWriter.fill(map0, writeSheet0);
excelWriter.fill(new FillWrapper("data1", repairGoodsList),fillConfig, writeSheet0);
excelWriter.fill(new FillWrapper("data2", unRepairGoodsList),fillConfig, writeSheet0);
WriteSheet writeSheet1 = EasyExcel.writerSheet(1).build();
excelWriter.fill(map1, writeSheet1);
excelWriter.finish();
outputStream.flush();
outputStream.close();
}
}
}

@ -637,7 +637,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
if (device.isPresent()) {
Optional<Long> limsId = Optional.ofNullable(device.get().getLimsId());
if (limsId.isPresent()) {
map.put("in", total + workOrder.getLaborCost());
map.put("in", total + (workOrder.getLaborCost() == null ? 0 : workOrder.getLaborCost()));
map.put("out", "--");
map.put("sel1", "√");
map.put("sel2", null);

@ -120,11 +120,13 @@ public class Dept implements Serializable {
@Schema(description = "是否已删除")
private Integer isDeleted;
/**
* 部门种类
* 实验室房间
*/
// private Integer deptCat;
private String provinceName;
private String provinceCode;
private String cityName;
private String cityCode;
}

Loading…
Cancel
Save