提交 21f5ad34 authored 作者: zhoushaopan's avatar zhoushaopan

feat(维修模块): 新增维修

新增维修
上级 fa7f77aa
......@@ -266,14 +266,10 @@ public class DeviceLibraryController {
Map<Integer, String> styleMap = configCache.getStyleMap();
Set<Integer> status = new HashSet<>();
// Set<String> models = new HashSet<>();
List<String> models = new ArrayList<>();
List<String> names = new ArrayList<>();
// Set<String> names = new HashSet<>();
List<String> ownUnits = new ArrayList<>();
// Set<String> ownUnits = new HashSet<>();
List<String> locationUnits = new ArrayList<>();
// Set<String> locationUnits = new HashSet<>();
Set<String> storageLocation = new HashSet<>();
//形态
List<Integer> types = new ArrayList<>();
......@@ -298,10 +294,10 @@ public class DeviceLibraryController {
map.put("names",nameList);
// map.put("ownUnits",ownUnits);
// map.put("locationUnits",locationUnits);
List<String> finalOwnUnits = ownUnits.stream().distinct().sorted(Comparator.comparing(String::toString)).collect(Collectors.toList());
map.put("ownUnits",finalOwnUnits);
List<String> finalLocationUnits = locationUnits.stream().distinct().sorted(Comparator.comparing(String::toString)).collect(Collectors.toList());
map.put("locationUnits",finalLocationUnits);
List<String> finalOwnUnits = DeviceModelSort.unitToSort(ownUnits);
map.put("ownUnits",finalOwnUnits.stream().distinct().collect(Collectors.toList()));
List<String> finalLocationUnits = DeviceModelSort.unitToSort(locationUnits);
map.put("locationUnits",finalLocationUnits.stream().distinct().collect(Collectors.toList()));
map.put("lifeStatus",status.stream().map(integer -> new LifeStatusVo(integer,lifeStatusMap.get(integer))).collect(Collectors.toList()));
map.put("storageLocation",storageLocation);
//形态
......
......@@ -169,5 +169,9 @@ public interface DeviceLibraryDao extends JpaRepository<DeviceLibrary, Integer>,
int batchUpdateDevices(String oldModel,String newModel);
List<DeviceLibrary> findAllByModel(String model);
@Modifying
@Query("update DeviceLibrary d set d.ownUnit = d.locationUnit where d.id in :deviceIds")
int updateDevicesOwnUnit(@Param("deviceIds") List<Integer> deviceIds);
}
......@@ -236,4 +236,9 @@ public interface DeviceLibraryService {
* 通过型号查询装备
*/
List<DeviceLibrary> findAllByModel(String model);
/**
* @param deviceIds 装备id
*/
void updateDevicesOwnUnit(List<Integer> deviceIds);
}
......@@ -730,6 +730,11 @@ public class DeviceLibraryServiceImpl implements DeviceLibraryService {
return deviceLibraryDao.findAll(predicateBuilder.build());
}
@Override
public void updateDevicesOwnUnit(List<Integer> deviceIds) {
deviceLibraryDao.updateDevicesOwnUnit(deviceIds);
}
@Override
public DeviceLibrary update(DeviceLibrary deviceLibraryEntity) {
......
......@@ -2,6 +2,7 @@ package com.tykj.dev.device.repair.controller;
import com.fasterxml.jackson.core.type.TypeReference;
import com.tykj.dev.config.GlobalMap;
import com.tykj.dev.config.base.DeviceLifeStatus;
import com.tykj.dev.config.swagger.AutoDocument;
import com.tykj.dev.device.file.service.FilesUtil;
import com.tykj.dev.device.library.repository.DeviceLibraryDao;
......@@ -38,9 +39,7 @@ import com.tykj.dev.device.user.subject.entity.User;
import com.tykj.dev.device.user.subject.service.UnitsService;
import com.tykj.dev.device.user.subject.service.UserPublicService;
import com.tykj.dev.device.user.util.UserUtils;
import com.tykj.dev.misc.base.BusinessEnum;
import com.tykj.dev.misc.base.CustomOrder;
import com.tykj.dev.misc.base.StatusEnum;
import com.tykj.dev.misc.base.*;
import com.tykj.dev.misc.exception.ApiException;
import com.tykj.dev.misc.utils.*;
import com.tykj.dev.rfid.service.InputOutputDeviceService;
......@@ -137,6 +136,9 @@ public class RepairController {
@Autowired
private RepairBackBillService repairBackBillService;
@Autowired
private RepairBillService repairBillService;
@ApiOperation(value = "判断维修装备是否同一个送修单位", notes = "可以通过这个接口判断维修装备是否同一个送修单位")
@PostMapping(value = "/judge")
@Transactional(rollbackFor = Exception.class)
......@@ -2242,22 +2244,21 @@ public class RepairController {
Integer parentTaskId = taskBto.getParentTaskId();
TaskBto parentTask = taskService.get(parentTaskId);
//父任务未被完成 可以被撤回
//父任务未被完成 可以被撤回r
Integer billId = taskBto.getBillId();
String title = taskBto.getTitle();
// AllotBill allotBill = allotBillService.getOne(billId);
RepairSendBill sendBill = repairSendBillService.getOne(billId);
RepairBill repairBill = repairBillService.getOne(billId);
Integer currentUserId = userUtils.getCurrentUserId();
List<Integer> idList = userPublicService.findOtherUser(currentUserId);
//找到收件方的阅知
MessageBto messageBto1 = messageService.findByTaskId(parentTaskId).parse2Bto();
//纵向配发阅知要发给收件单位的人
idList.addAll(userDao.findAllByUnitsId(userPublicService.findUnitIdByName(sendBill.getReceiveUnit())).stream()
idList.addAll(userDao.findAllByUnitsId(userPublicService.findUnitIdByName(repairBill.getReceiveUnit())).stream()
.map(User::getUserId)
.collect(Collectors.toList()));
//给同单位专管员和收件单位专管员推阅知
// messageBto1.setContent(title.substring(0,4)+"撤回"+title.substring(4));
messageBto1.setContent("撤回任务:" + title);
MessageBto messageBto = new MessageBto(-1, parentTask.getBusinessType(), messageBto1.getContent(), idList, 1);
BeanUtils.copyProperties(messageBto1,messageBto);
......@@ -2267,6 +2268,8 @@ public class RepairController {
//将任务都完结
taskService.moveToRevoke(taskBto);
taskService.moveToRevoke(parentTask);
//通过维修id查询送修单
RepairSendBill sendBill = repairSendBillService.findByRepairdId(repairBill.getId());
if (sendBill.getRepairDeviceCheckDetail() != null) {
List<Integer> ids = StringSplitUtil.split(sendBill.getRepairDeviceCheckDetail());
//所有的装备
......@@ -2277,25 +2280,45 @@ public class RepairController {
ids.forEach(id -> {
DeviceLibrary deviceLibrary = deviceLibraryService.getOne(id);
//添加装备日志
DeviceLogDto deviceLogDto = new DeviceLogDto(id, "对" + deviceLibrary.getName() + "配发撤回", null, null, null);
DeviceLogDto deviceLogDto = new DeviceLogDto(id, "对" + deviceLibrary.getName() + "维修退回的撤回", null, null, null);
deviceLogDtos.add(deviceLogDto);
});
//设置装备为在库
deviceLibraryService.updateLifeStatus2(2,ids);
//设置
deviceLibraryService.updateLifeStatus2(4,ids);
deviceLibraryList = deviceLibraryService.findByIds(ids);
//添加日志
deviceLogService.addAllLog(deviceLogDtos);
sendBill.setDeviceLibraries(deviceLibraryList);
//当前单位
String currentUserUnitName = userUtils.getCurrentUserUnitName();
//查询维修详情
List<RepairDetail> byDeviceRepairBillId = repairDetailDao.findByDeviceRepairBillId(repairBill.getId());
//进行过滤
// List<RepairDetail> repairDetails = byDeviceRepairBillId.stream().filter(repairDetail -> repairDetail.getRepairBackBillId() == null && repairDetail.getRepairStatus().equals(RepairStatusEnum.WAIT_REPAIR.id) && repairDetail.getLocationUnit().equals(repairDetail.getOwnUnit()))
// .collect(Collectors.toList());
List<RepairDetail> repairDetails = byDeviceRepairBillId.stream().filter(repairDetail -> {
if (!repairDetail.getLocationUnit().equals(repairDetail.getOwnUnit())) {
return repairDetail.getRepairBackBillId() == null && repairDetail.getRepairStatus().equals(RepairStatusEnum.WAIT_REPAIR.id) && repairDetail.getLocationUnit().equals(currentUserUnitName);
} else {
return repairDetail.getRepairBackBillId() == null && repairDetail.getRepairStatus().equals(RepairStatusEnum.WAIT_REPAIR.id) && repairDetail.getLocationUnit().equals(repairDetail.getOwnUnit());
}
}).collect(Collectors.toList());
repairDetails.forEach(repairDetail -> {
repairDetail.setDeviceRepairBillId(0);
repairDetail.setRepairStatus(RepairStatusEnum.WAIT_SEND.id);
repairDetailDao.save(repairDetail);
});
//直接删除维修单
repairBillService.delete(repairBill.getId());
repairSendBillService.delete(sendBill.getId());
}
return ResponseEntity.ok(messageBto);
}
@ApiOperation(value = "维修撤回", notes = "根据任务id撤回维修")
@ApiOperation(value = "维修退回的撤回", notes = "根据任务id撤回维修")
@GetMapping("/revokeRepairBackTask/taskId")
@Transactional(rollbackFor = Exception.class)
public ResponseEntity revokeRepairBackTask(Integer taskId) {
......@@ -2339,19 +2362,30 @@ public class RepairController {
ids.forEach(id -> {
DeviceLibrary deviceLibrary = deviceLibraryService.getOne(id);
//添加装备日志
DeviceLogDto deviceLogDto = new DeviceLogDto(id, "对" + deviceLibrary.getName() + "配发撤回", null, null, null);
DeviceLogDto deviceLogDto = new DeviceLogDto(id, "对" + deviceLibrary.getName() + "维修撤回", null, null, null);
deviceLogDtos.add(deviceLogDto);
});
//设置装备为在库
deviceLibraryService.updateLifeStatus2(2,ids);
//设置装备为维修
deviceLibraryService.updateLifeStatus2(DeviceLifeStatus.REPAIRING.id,ids);
deviceLibraryList = deviceLibraryService.findByIds(ids);
//添加日志
deviceLogService.addAllLog(deviceLogDtos);
repairBackBill.setDeviceLibraries(deviceLibraryList);
repairSendBillService.delete(repairBackBill.getId());
//当前单位
String currentUserUnitName = userUtils.getCurrentUserUnitName();
//更新账单详情
List<RepairDetail> byRepairBackBillId = repairDetailDao.findByRepairBackBillId(repairBackBill.getId());
List<RepairDetail> repairDetails = byRepairBackBillId.stream().filter(repairDetail -> repairDetail.getDeviceRepairBillId() != null && !repairDetail.getLocationUnit().equals(repairDetail.getOwnUnit()) && repairDetail.getRepairStatus().equals(RepairStatusEnum.RECEIVE_WAIT_STORAGE.id) && repairDetail.getLocationUnit().equals(currentUserUnitName))
.collect(Collectors.toList());
for (RepairDetail repairDetail : repairDetails) {
repairDetail.setRepairBackBillId(0);
repairDetail.setRepairStatus(2);
repairDetailDao.save(repairDetail);
}
//删除账单
repairBackBillService.delete(repairBackBill.getId());
}
return ResponseEntity.ok(messageBto);
......@@ -2372,7 +2406,7 @@ public class RepairController {
@GetMapping("getBackFileList")
@ApiOperation("通过任务id查询维修退回账单中文件")
public ResponseEntity getBackFileList(Integer taskId){
return ResponseEntity.ok(repairSendBillService.getFileList(taskId));
return ResponseEntity.ok(repairBackBillService.getFileList(taskId));
}
@Qualifier("taskExecutor")
......
......@@ -3,6 +3,10 @@ package com.tykj.dev.device.repair.repository;
import com.tykj.dev.device.repair.subject.domin.RepairBill;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
......
......@@ -6,6 +6,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
......@@ -44,4 +45,11 @@ public interface RepairDetailDao extends JpaRepository<RepairDetail, Integer>, J
void updateModel(String model,List<Integer> ids);
List<RepairDetail> findAllByModel(String model);
List<RepairDetail> findAllByDeviceIdIn(List<Integer> deviceIds);
@Transactional
@Modifying
@Query("update RepairDetail r set r.remark = :remake where r.id in :repairDetailIds")
void updateRemakeForClear(@Param("remake") String remake,@Param("repairDetailIds") List<Integer> repairDetailIds);
}
......@@ -3,7 +3,10 @@ package com.tykj.dev.device.repair.repository;
import com.tykj.dev.device.repair.subject.domin.RepairSendBill;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
......@@ -16,4 +19,10 @@ public interface RepairSendBillDao extends JpaRepository<RepairSendBill, Integer
@Query("select o from RepairSendBill o where o.sendUnit= :unitName and o.createTime >= :startTime and o.createTime <= :endTime")
List<RepairSendBill> findAllByUnitBetweenTime(String unitName, Date startTime, Date endTime);
@Transactional
@Modifying
@Query("update RepairSendBill r set r. = :remake where r.id in :repairDetailIds")
void updateRemakeForClear(@Param("remake") String remake, @Param("repairDetailIds") List<Integer> repairDetailIds);
}
......@@ -2,6 +2,8 @@ package com.tykj.dev.device.repair.service;
import com.tykj.dev.device.repair.subject.domin.RepairDetail;
import com.tykj.dev.device.repair.subject.vo.ClearTaskVo;
import com.tykj.dev.device.repair.subject.vo.SetDevicesOwnUnit;
import java.util.List;
......@@ -43,4 +45,14 @@ public interface RepairDetailService extends RepairPublicService<RepairDetail> {
*/
void sendHash(List<RepairDetail> repairDetails);
/**
* @param deviceIds 装备id
*/
List<ClearTaskVo> getClearTaskVo(List<Integer> deviceIds);
/**
* @param setDevicesOwnUnits
*/
void setDevicesOwnUnit(List<SetDevicesOwnUnit> setDevicesOwnUnits);
}
......@@ -36,4 +36,15 @@ public interface RepairSendBillService {
*/
Map<String,List<FileRet>> getFileList(Integer taskId);
/**
* 根据维修id查询
*/
RepairSendBill findByRepairdId(Integer repairId);
/**
*
*/
}
......@@ -3,19 +3,37 @@ package com.tykj.dev.device.repair.service.impl;
import com.tykj.dev.blockcha.subject.entity.BcHash;
import com.tykj.dev.blockcha.subject.service.BlockChainUtil;
import com.tykj.dev.config.TaskBeanConfig;
import com.tykj.dev.device.library.service.DeviceLibraryService;
import com.tykj.dev.device.library.subject.domin.DeviceLibrary;
import com.tykj.dev.device.repair.repository.RepairDetailDao;
import com.tykj.dev.device.repair.repository.RepairSendBillDao;
import com.tykj.dev.device.repair.service.RepairDetailService;
import com.tykj.dev.device.repair.subject.domin.RepairBill;
import com.tykj.dev.device.repair.subject.domin.RepairDetail;
import com.tykj.dev.device.repair.subject.domin.RepairSendBill;
import com.tykj.dev.device.repair.subject.vo.BillVo;
import com.tykj.dev.device.repair.subject.vo.ClearTaskVo;
import com.tykj.dev.device.repair.subject.vo.SetDevicesOwnUnit;
import com.tykj.dev.device.task.service.TaskService;
import com.tykj.dev.device.task.subject.bto.TaskBto;
import com.tykj.dev.device.task.subject.domin.Task;
import com.tykj.dev.device.user.read.subject.bto.MessageBto;
import com.tykj.dev.device.user.subject.entity.User;
import com.tykj.dev.misc.base.BusinessEnum;
import com.tykj.dev.misc.base.StatusEnum;
import com.tykj.dev.misc.exception.ApiException;
import com.tykj.dev.misc.utils.JacksonUtil;
import com.tykj.dev.misc.utils.ResultUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
/**
* @author zjm
......@@ -32,6 +50,15 @@ public class RepairDetailServiceImpl implements RepairDetailService {
@Autowired
private BlockChainUtil blockChainUtil;
@Autowired
private TaskService taskService;
@Autowired
private DeviceLibraryService deviceLibraryService;
@Autowired
RepairSendBillDao repairSendBillDao;
@Override
public RepairDetail save(RepairDetail deviceRepairDetailEntity) {
RepairDetail repairDetail = deviceRepairDetailDao.save(deviceRepairDetailEntity);
......@@ -109,4 +136,60 @@ public class RepairDetailServiceImpl implements RepairDetailService {
update(repairDetail);
});
}
@Override
public List<ClearTaskVo> getClearTaskVo(List<Integer> deviceIds) {
List<ClearTaskVo> clearTaskVos = new ArrayList<>();
//通过装备id查询出账单id (送修单repairBill)
List<RepairDetail> repairDetails = deviceRepairDetailDao.findAllByDeviceIdIn(deviceIds);
List<BillVo> billVos = new ArrayList<>();
repairDetails.forEach(repairDetail -> {
BillVo billVo = new BillVo();
billVo.setBillId(repairDetail.getDeviceRepairBillId());
billVo.setDevicesId(repairDetail.getDeviceId());
billVo.setRepairDetailId(repairDetail.getId());
billVos.add(billVo);
//通过账单id和businessType查询task对象
//过滤出状态是 StatusEnum.REVOKEALLOTTASK.id
List<Task> taskList = taskService.findByBillIdAndBusinessType(repairDetail.getDeviceRepairBillId(), BusinessEnum.REPAIR.id);
ClearTaskVo clearTaskVo = new ClearTaskVo();
clearTaskVo.setTaskId(taskList.get(0).getId());
clearTaskVo.setBusinessType(BusinessEnum.REPAIR.id);
clearTaskVo.setBillVos(billVos);
clearTaskVos.add(clearTaskVo);
});
return clearTaskVos;
}
@Override
public void setDevicesOwnUnit(List<SetDevicesOwnUnit> setDevicesOwnUnits) {
//修改装备的所属以及备注
//1 通过装备id修改装备的所属
//1.2 获取装备的id
List<Integer> deviceIds = setDevicesOwnUnits.stream().map(SetDevicesOwnUnit::getDeviceId).collect(Collectors.toList());
//修改装备的所属
deviceLibraryService.updateDevicesOwnUnit(deviceIds);
//修改维修单的remark
List<Integer> repairBillIds = setDevicesOwnUnits.stream().map(SetDevicesOwnUnit::getRepairBillId).collect(Collectors.toList());
//根据sendBill查询
List<RepairSendBill> repairBills = new ArrayList<>();
repairBillIds.forEach(integer -> {
RepairSendBill sendBill = repairSendBillDao.findByDeviceRepairBillId(integer);
repairBills.add(sendBill);
});
// deviceRepairSendBillEntity.setScriptJson(JacksonUtil.toJSon(repairBillSaveVo.getScriptSaveVos()));
List<Integer> repairDetailIds = setDevicesOwnUnits.stream().map(SetDevicesOwnUnit::getRepairDetailId).collect(Collectors.toList());
updateRemakeForClear(repairDetailIds);
//删除维修详情
repairDetailIds.forEach(integer -> {
deviceRepairDetailDao.deleteById(integer);
});
}
public void updateRemakeForClear(List<Integer> repairDetailIds){
String remake = "装备正在进行清退处理,维修任务终止";
deviceRepairDetailDao.updateRemakeForClear(remake,repairDetailIds);
}
}
......@@ -117,6 +117,11 @@ public class RepairSendBillServiceImpl implements RepairSendBillService {
return map;
}
@Override
public RepairSendBill findByRepairdId(Integer repairId) {
return deviceRepairSendBillDao.findByDeviceRepairBillId(repairId);
}
private Specification<RepairSendBill> getSelectSpecification(RepairBillSelectVo deviceRepairBillSelectVo) {
PredicateBuilder<RepairSendBill> predicateBuilder = Specifications.and();
......
package com.tykj.dev.device.repair.subject.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel("返回清退任务")
public class BillVo {
@ApiModelProperty(value = "业务id", example = "1")
private Integer billId;
@ApiModelProperty(value = "维修单详情id", example = "1")
private Integer repairDetailId;
@ApiModelProperty(value = "装备id", example = "1")
private Integer devicesId;
}
package com.tykj.dev.device.repair.subject.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel("返回清退任务")
public class ClearTaskVo {
@ApiModelProperty(value = "任务id", example = "1")
private Integer taskId;
@ApiModelProperty(value = "业务类型", example = "1")
private Integer businessType;
@ApiModelProperty(value = "账单id类", example = "1")
private List<BillVo> billVos;
}
package com.tykj.dev.device.repair.subject.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel("修改装备的所属")
public class SetDevicesOwnUnit {
@ApiModelProperty(value = "维修单详情id", example = "1")
private Integer repairDetailId;
@ApiModelProperty(value = "装备id", example = "1")
private Integer deviceId;
@ApiModelProperty(value = "维修单id", example = "1")
private Integer repairBillId;
}
......@@ -252,4 +252,9 @@ public interface TaskService {
* 查询多个任务
*/
TaskBto findByTaskIds(List<Integer> ids);
/**
* 根据billId和businessType获得Task
*/
List<Task> findByBillIdAndBusinessType(Integer billId, Integer businessType);
}
......@@ -1174,6 +1174,13 @@ public class TaskServiceImpl implements TaskService {
}
}
@Override
public List<Task> findByBillIdAndBusinessType(Integer billId, Integer businessType) {
List<Task> tasks = taskDao.findAllByBillIdAndBusinessType(billId, businessType);
return tasks.stream().filter(task -> task.getBillStatus().equals(StatusEnum.REVOKEALLOTTASK.id))
.collect(Collectors.toList());
}
@Override
public void moveAllSonNodeToEnd(Integer taaskId) {
List<Task> tasks = taskDao.findAllByParentTaskId(taaskId);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论