提交 7e48dbf1 authored 作者: zjm's avatar zjm

添加托管业务以及应急业务代码-zjm

上级 fc2e4608
......@@ -119,7 +119,12 @@ public enum DeviceLifeStatus {
/**
* 停用
*/
STOP(23,"停用");
STOP(23,"停用"),
/**
* 应急中
*/
EMERGENCY(24,"应急中");
public Integer id;
......
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>equip</artifactId>
<groupId>com.tykj</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>dev-emergency</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.tykj</groupId>
<artifactId>dev-user</artifactId>
</dependency>
<dependency>
<groupId>com.tykj</groupId>
<artifactId>dev-library</artifactId>
</dependency>
<dependency>
<groupId>com.tykj</groupId>
<artifactId>dev-task</artifactId>
</dependency>
<dependency>
<groupId>com.tykj.dev</groupId>
<artifactId>misc</artifactId>
</dependency>
<dependency>
<groupId>com.tykj</groupId>
<artifactId>dev-file</artifactId>
</dependency>
<dependency>
<groupId>com.tykj.dev</groupId>
<artifactId>config</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.tykj.dev.device.emergency;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author zjm
* @version 1.0.0
* @ClassName userApp.java
* @Description TODO
* @createTime 2020年09月01日 14:32:00
*/
@SpringBootApplication(scanBasePackages = {
"com.tykj.dev.*",
}
)
public class EmergencyApp {
public static void main(String[] args) {
SpringApplication.run(EmergencyApp.class, args);
}
}
package com.tykj.dev.device.emergency.controller;
import com.tykj.dev.config.swagger.AutoDocument;
import com.tykj.dev.device.emergency.entity.EmergencyBill;
import com.tykj.dev.device.emergency.entity.EmergencyLibrary;
import com.tykj.dev.device.emergency.entity.vo.EmergencySelectVo;
import com.tykj.dev.device.emergency.entity.vo.UserWorkload;
import com.tykj.dev.device.emergency.service.EmergencyBillService;
import com.tykj.dev.device.user.subject.entity.SecurityUser;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.annotation.Resource;
import java.util.List;
/**
* @author huangxiahao
*/
@RestController
@RequestMapping(value = "/emergency")
@AutoDocument
@Api(tags = "应急保障业务", value = "应急保障业务模块")
public class EmergencyController {
@Resource
EmergencyBillService emergencyBillService;
@ApiOperation(value = "转换装备生命周期 在库-》应急中", notes = "转换装备生命周期")
@PostMapping(value ="/convertLibrary/{userId}")
public ResponseEntity saveDeviceDestroyBill(@ApiIgnore @AuthenticationPrincipal SecurityUser securityUser, @RequestBody List<EmergencyLibrary> emergencyLibraryList, @PathVariable Integer userId){
emergencyBillService.convertLibrary(emergencyLibraryList,userId);
return ResponseEntity.ok("转换成功");
}
@ApiOperation(value = "转换装备生命周期 应急中-》在库", notes = "转换装备生命周期")
@PostMapping(value ="/rollOut/{userId}")
public ResponseEntity rollOut(@ApiIgnore @AuthenticationPrincipal SecurityUser securityUser, @RequestBody List<EmergencyLibrary> emergencyLibraryList, @PathVariable Integer userId){
emergencyBillService.rollOut(emergencyLibraryList,userId);
return ResponseEntity.ok("转换成功");
}
@ApiOperation(value = "应急保障 -添加配发出库业务", notes = "转换装备生命周期")
@PostMapping(value ="/saveEmergencyBill")
public ResponseEntity<EmergencyBill> rollOut(@ApiIgnore @AuthenticationPrincipal SecurityUser securityUser, @RequestBody EmergencyBill emergencyBill){
return ResponseEntity.ok(emergencyBillService.saveEmergencyBill(emergencyBill));
}
@ApiOperation(value = "应急保障 -回收配发出库业务(id 业务id)", notes = "转换装备生命周期")
@PostMapping(value ="/recycleEmergencyBill/{id}")
public ResponseEntity<EmergencyBill> recycleEmergencyBill(@ApiIgnore @AuthenticationPrincipal SecurityUser securityUser, @PathVariable Integer id){
return ResponseEntity.ok(emergencyBillService.recycleEmergencyBill(id,securityUser));
}
@ApiOperation(value = "应急保障 -分页查询业务列表(传分页相关字段)", notes = "转换装备生命周期")
@PostMapping(value ="/selectPage")
public ResponseEntity<Page<EmergencyBill>> recycleEmergencyBill(@RequestBody EmergencySelectVo emergencySelectVo){
return ResponseEntity.ok(emergencyBillService.selectPage(emergencySelectVo));
}
@ApiOperation(value = "应急保障 -根据时间查询相关工作量统计数据(传开始时间和结束时间)", notes = "转换装备生命周期")
@PostMapping(value ="/selectPage")
public ResponseEntity<List<UserWorkload>> queryTimeUserWorkload(@RequestBody EmergencySelectVo emergencySelectVo){
return ResponseEntity.ok(emergencyBillService.queryTimeUserWorkload(emergencySelectVo.getStartTime(),emergencySelectVo.getEndTime()));
}
}
package com.tykj.dev.device.emergency.dao;
import com.tykj.dev.device.emergency.entity.EmergencyBill;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.time.LocalDateTime;
import java.util.List;
public interface EmergencyBillDao extends JpaRepository<EmergencyBill, Integer>, JpaSpecificationExecutor<EmergencyBill> {
List<EmergencyBill> findAllByInitiateTimeBetweenAndStatus(LocalDateTime sTime, LocalDateTime eTime,Integer status);
}
package com.tykj.dev.device.emergency.dao;
import com.tykj.dev.device.emergency.entity.EmergencyLibrary;
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 javax.transaction.Transactional;
import java.util.List;
public interface EmergencyLibraryDao extends JpaRepository<EmergencyLibrary, Integer>, JpaSpecificationExecutor<EmergencyLibrary> {
@Transactional
@Modifying
@Query(value = "update EmergencyLibrary d set d.status = ?2 where d.libraryId in ?1")
int updateIdsToStatus(List<Integer> ids, Integer status);
Boolean existsAllByLibraryIdInAndStatus(List<Integer> ids,Integer status);
}
package com.tykj.dev.device.emergency.entity;
import com.tykj.dev.device.emergency.entity.vo.EmergencyLibraryVo;
import com.tykj.dev.device.file.entity.FileRet;
import com.tykj.dev.device.library.subject.vo.ScriptSaveVo;
import com.tykj.dev.misc.base.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.annotations.Where;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Data
@Entity
@EntityListeners(AuditingEntityListener.class)
@Where(clause = "delete_tag = 0")
@ApiModel("应急保障业务表")
@Table(name = "zb_emergency_bill")
public class EmergencyBill extends BaseEntity {
/**
* 随行人员名称
*/
@ApiModelProperty(value = "随行人员名称 -隔开")
private String accompanyName;
/**
* 发起任务用户id
*/
@ApiModelProperty(value = "发起任务用户id")
private Integer userId;
/**
* 任务地点
*/
@ApiModelProperty(value = "任务地点")
private String place;
/**
* 保障对象
*/
@ApiModelProperty(value = "保障对象")
private String guarantee;
/**
* 开始时间
*/
@ApiModelProperty(value = "开始时间")
private LocalDateTime initiateTime;
/**
* 结束时间
*/
@ApiModelProperty(value = "结束时间")
private LocalDateTime endTime;
/**
* 状态 1.执行中 2已回收
*/
@ApiModelProperty(value = "状态 1.执行中 2已回收")
private Integer status;
@ApiModelProperty(value = "保障天数")
private Integer emergencyDay;
/**
* 文件db
*
*/
@ApiModelProperty(value = "文件db")
@Column(name = "files",columnDefinition = "TEXT")
private String files;
/**
* 签发人(A岗位)
*/
@ApiModelProperty(value = "发件经办人(A岗位)")
private Integer sendUserAId;
/**
* 签发人和发件经办人(A岗位)
*/
@ApiModelProperty(value = "发件经办人(A岗位)")
private Integer sendUserAName;
/**
* 签发人(A岗位)
*/
@ApiModelProperty(value = "发件经办人(A岗位)")
private Integer sendUserBId;
/**
* 签发人和发件经办人(A岗位)
*/
@ApiModelProperty(value = "发件经办人(A岗位)")
private Integer sendUserBName;
@ApiModelProperty(value = "单据数据")
@Column(name = "mergency_library_vo_json",columnDefinition = "TEXT")
private String mergencyLibraryVoJson;
@Transient
@ApiModelProperty(value = "文件对象集合")
private List<FileRet> fileRets;
@Transient
@ApiModelProperty(value = "单据数据集合")
private List<EmergencyLibraryVo> emergencyLibraryList = new ArrayList<>();
}
package com.tykj.dev.device.emergency.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.annotations.Where;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
@Data
@Entity
@EntityListeners(AuditingEntityListener.class)
@Where(clause = "delete_tag = 0")
@ApiModel("应急保障设备状态表")
@Table(name = "zb_emergency_library")
public class EmergencyLibrary {
/**
* 主键id
*/
@ApiModelProperty(value = "发起人id")
@Id
private Integer libraryId;
@ApiModelProperty(value = "应急库时的状态 1.待出库 2.任务中")
private Integer status = 1;
}
package com.tykj.dev.device.emergency.entity.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("应急保障业务单据装备实体vo")
public class EmergencyLibraryVo {
@ApiModelProperty(value = "装备id")
private Integer id;
@ApiModelProperty(value = "型号")
private String model;
@ApiModelProperty(value = "类型")
private String type;
@ApiModelProperty(value = "装备名称")
private String name;
@ApiModelProperty(value = "装备序列号")
private String seqNumber;
@ApiModelProperty(value = "密级")
private String secretLevel;
@ApiModelProperty(value = "可见范围")
private String invisibleRange;
@ApiModelProperty(value = "配发类型")
private String allotType;
}
package com.tykj.dev.device.emergency.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.tykj.dev.misc.base.CustomPage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
/**
* @author zjm
* @version 1.0.0
* @ClassName RepelManagementVo.java
* @Description 应急保障 业务查询vo
* @createTime 2021年01月23日 12:42:00
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("应急保障业务分页查询以及统计查询条件vo")
public class EmergencySelectVo extends CustomPage {
/**
* 开始时间
*/
@ApiModelProperty(value = "开始时间")
private LocalDateTime startTime;
/**
* 结束时间
*/
@ApiModelProperty(value = "结束时间")
private LocalDateTime endTime;
}
package com.tykj.dev.device.emergency.entity.vo;
import com.tykj.dev.device.emergency.entity.EmergencyBill;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ApiModel("应急保障统计数据vo")
public class UserWorkload {
/**
* 随行人员名称
*/
@ApiModelProperty(value = "随行人员名称 -隔开")
private String accompanyName;
@ApiModelProperty(value = "保障天数")
private Integer guaranteeDay;
@ApiModelProperty(value = "保障次数")
private Integer guaranteeCount;
@ApiModelProperty(value = "详情数据集合")
private List<EmergencyBill> emergencyBillList;
}
package com.tykj.dev.device.emergency.service;
import com.tykj.dev.device.emergency.entity.EmergencyBill;
import com.tykj.dev.device.emergency.entity.EmergencyLibrary;
import com.tykj.dev.device.emergency.entity.vo.EmergencySelectVo;
import com.tykj.dev.device.emergency.entity.vo.UserWorkload;
import com.tykj.dev.device.user.subject.entity.SecurityUser;
import org.springframework.data.domain.Page;
import java.time.LocalDateTime;
import java.util.List;
public interface EmergencyBillService {
/**
* 转换装备生命周期
*/
void convertLibrary(List<EmergencyLibrary> emergencyLibraryList, Integer userId);
/**
* 转换装备生命周期
*/
void rollOut(List<EmergencyLibrary> emergencyLibraryList, Integer userId);
/**
* 应急保障 根据业务id查询业务详情
* @param Id 业务id
* @return 业务实体
*/
EmergencyBill queryById(Integer Id);
/**
* 应急保障 -添加配发出库业务
* @param emergencyBill 配发出库业务实体
* @return 业务实体
*/
EmergencyBill saveEmergencyBill(EmergencyBill emergencyBill);
/**
* 应急保障 -回收配发出库业务
* @return 业务实体
*/
EmergencyBill recycleEmergencyBill(Integer id,SecurityUser securityUser);
/**
* 分页查询业务列表
* @return Page<EmergencyBill>
*/
Page<EmergencyBill> selectPage(EmergencySelectVo emergencySelectVo);
/**
* 根据时间查询相关工作量统计数据
*/
List<UserWorkload> queryTimeUserWorkload(LocalDateTime sTime,LocalDateTime eTime);
}
package com.tykj.dev.device.emergency.service;
import com.alibaba.fastjson.JSON;
import com.tykj.dev.config.base.DeviceLifeStatus;
import com.tykj.dev.device.emergency.dao.EmergencyBillDao;
import com.tykj.dev.device.emergency.dao.EmergencyLibraryDao;
import com.tykj.dev.device.emergency.entity.EmergencyBill;
import com.tykj.dev.device.emergency.entity.EmergencyLibrary;
import com.tykj.dev.device.emergency.entity.vo.EmergencyLibraryVo;
import com.tykj.dev.device.emergency.entity.vo.EmergencySelectVo;
import com.tykj.dev.device.emergency.entity.vo.UserWorkload;
import com.tykj.dev.device.file.service.FilesUtil;
import com.tykj.dev.device.library.service.DeviceLibraryService;
import com.tykj.dev.device.library.service.DeviceLogService;
import com.tykj.dev.device.library.subject.Dto.DeviceLogDto;
import com.tykj.dev.device.library.subject.domin.DeviceLog;
import com.tykj.dev.device.library.subject.vo.ScriptSaveVo;
import com.tykj.dev.device.user.subject.entity.SecurityUser;
import com.tykj.dev.misc.exception.ApiException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
@Service
@Slf4j
public class EmergencyBillServiceImpl implements EmergencyBillService{
@Resource
EmergencyBillDao emergencyBillDao;
@Resource
EmergencyLibraryDao emergencyLibraryDao;
@Resource
DeviceLibraryService deviceLibraryService;
@Resource
DeviceLogService deviceLogService;
@Override
public void convertLibrary(List<EmergencyLibrary> emergencyLibraryList, Integer userId) {
List<Integer> ids = emergencyLibraryList.stream().map(EmergencyLibrary::getLibraryId).collect(Collectors.toList());
deviceLibraryService.upDateLeftStatus(DeviceLifeStatus.EMERGENCY.id,ids);
//添加生命值期日志
emergencyLibraryDao.saveAll(emergencyLibraryList);
devLogAdd(ids,"将装备转入到应急保障库",userId);
}
@Override
public void rollOut(List<EmergencyLibrary> emergencyLibraryList, Integer userId) {
List<Integer> ids = emergencyLibraryList.stream().map(EmergencyLibrary::getLibraryId).collect(Collectors.toList());
deviceLibraryService.upDateLeftStatus(DeviceLifeStatus.IN_LIBRARY.id,ids);
devLogAdd(ids,"装备转出应急保障库",userId);
}
@Override
public EmergencyBill queryById(Integer Id) {
Optional<EmergencyBill> byId = emergencyBillDao.findById(Id);
if (byId.isPresent()){
return byId.get();
}else {
throw new ApiException("[应急保障] 根据业务id查询失败 :"+Id);
}
}
@Override
public EmergencyBill saveEmergencyBill(EmergencyBill emergencyBill) {
List<Integer> collect = emergencyBill.getEmergencyLibraryList().stream().map(EmergencyLibraryVo::getId).collect(Collectors.toList());
Boolean aBoolean = emergencyLibraryDao.existsAllByLibraryIdInAndStatus(collect, 1);
if (!aBoolean){
throw new ApiException("[应急保障] 配发出库装备处于任务中");
}
emergencyBill.setFiles(FilesUtil.stringFileToList(emergencyBill.getFileRets()));
emergencyBill.setMergencyLibraryVoJson(JSON.toJSONString(emergencyBill.getEmergencyLibraryList()));
emergencyLibraryDao.updateIdsToStatus(collect, 2);
devLogAdd(collect,"装备进行应急保障任务,随行人员为:"+emergencyBill.getAccompanyName()+",地点:"+emergencyBill.getPlace(),emergencyBill.getUserId());
return emergencyBillDao.save(emergencyBill);
}
@Override
public EmergencyBill recycleEmergencyBill(Integer id, SecurityUser securityUser) {
EmergencyBill emergencyBill = queryById(id);
emergencyBill.setStatus(2);
Duration duration = Duration.between(emergencyBill
.getInitiateTime()
.withHour(0)
.withMinute(0)
.withSecond(0)
.withNano(0),emergencyBill.getEndTime().plusDays(1).withHour(0)
.withMinute(0)
.withSecond(0)
.withNano(0));
List<EmergencyLibraryVo> emergencyLibraryVos = JSON.parseArray(emergencyBill.getMergencyLibraryVoJson(), EmergencyLibraryVo.class);
List<Integer> collect = emergencyLibraryVos.stream().map(EmergencyLibraryVo::getId).collect(Collectors.toList());
emergencyBill.setEmergencyDay(Math.toIntExact(duration.toDays()));
emergencyLibraryDao.updateIdsToStatus(collect, 1);
devLogAdd(collect,"应急保障任务结束,回收至应急保障库中",securityUser.getCurrentUserInfo().getUserId());
return emergencyBillDao.save(emergencyBill);
}
@Override
public Page<EmergencyBill> selectPage(EmergencySelectVo emergencySelectVo) {
Page<EmergencyBill> all = emergencyBillDao.findAll(emergencySelectVo.getPageable());
all.forEach(
emergencyBill -> {
emergencyBill.setFileRets(FilesUtil.stringFileToList(emergencyBill.getFiles()));
emergencyBill.setEmergencyLibraryList(JSON.parseArray(emergencyBill.getMergencyLibraryVoJson(),EmergencyLibraryVo.class));
}
);
return all;
}
@Override
public List<UserWorkload> queryTimeUserWorkload(LocalDateTime sTime, LocalDateTime eTime) {
List<EmergencyBill> allByInitiateTimeBetween = emergencyBillDao.findAllByInitiateTimeBetweenAndStatus(sTime, eTime,2);
List<UserWorkload> userWorkloadList=new ArrayList<>();
Map<String,List<EmergencyBill>> map=new HashMap<>();
allByInitiateTimeBetween.forEach(emergencyBill -> {
String[] split = emergencyBill.getAccompanyName().split("-");
for (String s : split) {
List<EmergencyBill> emergencyBills;
if (map.containsKey(s)){
emergencyBills = map.get(s);
}else {
emergencyBills = new ArrayList<>();
}
emergencyBills.add(emergencyBill);
map.put(s,emergencyBills);
}
});
map.forEach((k,v)-> userWorkloadList.add(UserWorkload.builder()
.guaranteeCount(v.size())
.accompanyName(k)
.emergencyBillList(v)
.guaranteeDay(v.stream().mapToInt(EmergencyBill::getEmergencyDay).sum())
.build()));
return userWorkloadList;
}
/**
* 异步添加装备日志
*/
private void devLogAdd(List<Integer> ids, String remark, Integer userId){
CompletableFuture.runAsync(() -> {
List<DeviceLog> logDtos=new ArrayList<>();
ids.forEach(
id -> {
logDtos.add(new DeviceLogDto(id,remark,null,userId).toDo());
}
);
deviceLogService.saveAllLog(logDtos);
});
}
public static void main(String[] args) {
Duration duration = Duration.between(LocalDateTime.now()
.withHour(0)
.withMinute(0)
.withSecond(0)
.withNano(0),LocalDateTime.now().plusDays(1).withHour(0)
.withMinute(0)
.withSecond(0)
.withNano(0));
System.out.println(duration.toDays());
}
}
package com.tykj.dev.device.matching.controller;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import com.tykj.dev.config.swagger.AutoDocument;
import com.tykj.dev.device.library.subject.vo.DevNameVO;
import com.tykj.dev.device.matching.repository.ExternalUnitEquipDao;
import com.tykj.dev.device.matching.repository.TrusteeshipEquipDao;
import com.tykj.dev.device.matching.service.ExternalUnitEquipService;
import com.tykj.dev.device.matching.service.TrusteeshipBillService;
import com.tykj.dev.device.matching.subject.domin.ExternalUnitEquip;
import com.tykj.dev.device.matching.subject.domin.TrusteeshipBill;
import com.tykj.dev.device.matching.subject.domin.TrusteeshipEquip;
import com.tykj.dev.device.matching.subject.vo.ExternalSelectVo;
import com.tykj.dev.device.matching.subject.vo.ExternalUpdataVo;
import com.tykj.dev.device.matching.subject.vo.TrusteeshipBillSelectVo;
import com.tykj.dev.device.matching.subject.vo.TrusteeshipEquipSelectVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
@RestController
@RequestMapping(value = "/trusteeship")
@AutoDocument
@Api(tags = "托管设备相关业务", description = "托管设备相关业务模块")
@Validated
public class TrusteeshipBillController {
@Autowired
private TrusteeshipBillService trusteeshipBillService;
@ApiOperation(value = "登记入库", notes = "登记信息")
@PostMapping("/saveInitTrusteeshipBill")
@Transactional(rollbackFor = Exception.class)
public ResponseEntity saveInitTrusteeshipBill(@RequestBody TrusteeshipBill trusteeshipBill) {
return ResponseEntity.ok(trusteeshipBillService.saveInitTrusteeshipBill(trusteeshipBill));
}
@ApiOperation(value = "退回登记", notes = "登记信息")
@PostMapping("/saveSendBackTrusteeshipBill")
@Transactional(rollbackFor = Exception.class)
public ResponseEntity saveSendBackTrusteeshipBill(@RequestBody TrusteeshipBill trusteeshipBill) {
return ResponseEntity.ok(trusteeshipBillService.saveSendBackTrusteeshipBill(trusteeshipBill));
}
@ApiOperation(value = "根据相关条件查询业务列表", notes = "托管")
@PostMapping("/queryTrusteeshipBillSelectVo")
@Transactional(rollbackFor = Exception.class)
public ResponseEntity queryTrusteeshipBillSelectVo(@RequestBody TrusteeshipBillSelectVo trusteeshipBillSelectVo) {
return ResponseEntity.ok(trusteeshipBillService.queryTrusteeshipBillSelectVo(trusteeshipBillSelectVo));
}
@ApiOperation(value = "根据相关条件查询托管设备列表", notes = "托管")
@PostMapping("/queryTrusteeshipEquipSelectVo")
@Transactional(rollbackFor = Exception.class)
public ResponseEntity queryTrusteeshipEquipSelectVo(@RequestBody TrusteeshipEquipSelectVo trusteeshipEquipSelectVo) {
return ResponseEntity.ok(trusteeshipBillService.queryTrusteeshipEquipSelectVo(trusteeshipEquipSelectVo));
}
@Autowired
TrusteeshipEquipDao trusteeshipEquipDao;
@PostMapping("/importExcel1")
@ApiOperation(value = "原本exl解析")
public ResponseEntity importExcel1(@RequestParam("file") MultipartFile file) {
Map<String, TrusteeshipEquip> collect = trusteeshipEquipDao.findAll().stream().collect(Collectors.toMap(TrusteeshipEquip::getNum, Function.identity()));
try {
byte[] byteArr = new byte[0];
byteArr = file.getBytes();
InputStream inputStream = new ByteArrayInputStream(byteArr);
//解析excel
ImportParams importParams = new ImportParams();
importParams.setHeadRows(1);
importParams.setTitleRows(0);
List<TrusteeshipEquip> excelRegs = ExcelImportUtil.importExcel(inputStream, ExternalUnitEquip.class, importParams);
excelRegs.forEach(
trusteeshipEquip -> {
if (collect.containsKey(trusteeshipEquip.getNum())){
trusteeshipEquip.setNum(null);
}else {
collect.put(trusteeshipEquip.getNum(),new TrusteeshipEquip());
}
}
);
return ResponseEntity.ok(excelRegs);
} catch (Exception e) {
e.printStackTrace();
}
return ResponseEntity.status(501).body("解析exl失败,请查看模版");
}
}
package com.tykj.dev.device.matching.repository;
import com.tykj.dev.device.matching.subject.domin.TrusteeshipBill;
import com.tykj.dev.device.matching.subject.domin.TrusteeshipEquip;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface TrusteeshipBillDao extends JpaRepository<TrusteeshipBill,Integer>, JpaSpecificationExecutor<TrusteeshipBill> {
}
package com.tykj.dev.device.matching.repository;
import com.tykj.dev.device.matching.subject.domin.TrusteeshipEquip;
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 javax.transaction.Transactional;
import java.util.List;
public interface TrusteeshipEquipDao extends JpaRepository<TrusteeshipEquip,Integer>, JpaSpecificationExecutor<TrusteeshipEquip> {
@Transactional
@Modifying
@Query(value = "update TrusteeshipEquip d set d.state = ?2 where d.id in ?1")
int updateIdsToStatus(List<Integer> ids, Integer status);
}
package com.tykj.dev.device.matching.service;
import com.tykj.dev.device.matching.subject.domin.TrusteeshipBill;
import com.tykj.dev.device.matching.subject.domin.TrusteeshipEquip;
import com.tykj.dev.device.matching.subject.vo.TrusteeshipBillSelectVo;
import com.tykj.dev.device.matching.subject.vo.TrusteeshipEquipSelectVo;
import org.springframework.data.domain.Page;
public interface TrusteeshipBillService {
/**
* 添加入库
*/
TrusteeshipBill saveInitTrusteeshipBill(TrusteeshipBill trusteeshipBill);
/**
* 退回业务
*/
TrusteeshipBill saveSendBackTrusteeshipBill(TrusteeshipBill trusteeshipBill);
/**
* 根据相关信息查询分页信息
*/
Page<TrusteeshipBill> queryTrusteeshipBillSelectVo(TrusteeshipBillSelectVo trusteeshipBillSelectVo);
/**
* 分页查询代管装备列表数据
*/
Page<TrusteeshipEquip> queryTrusteeshipEquipSelectVo(TrusteeshipEquipSelectVo trusteeshipEquipSelectVo);
}
package com.tykj.dev.device.matching.service.impl;
import com.alibaba.fastjson.JSON;
import com.github.wenhao.jpa.PredicateBuilder;
import com.github.wenhao.jpa.Specifications;
import com.tykj.dev.device.file.service.FilesUtil;
import com.tykj.dev.device.matching.repository.TrusteeshipBillDao;
import com.tykj.dev.device.matching.repository.TrusteeshipEquipDao;
import com.tykj.dev.device.matching.service.TrusteeshipBillService;
import com.tykj.dev.device.matching.subject.domin.ExternalUnitEquip;
import com.tykj.dev.device.matching.subject.domin.TrusteeshipBill;
import com.tykj.dev.device.matching.subject.domin.TrusteeshipEquip;
import com.tykj.dev.device.matching.subject.vo.ExternalSelectVo;
import com.tykj.dev.device.matching.subject.vo.TrusteeshipBillSelectVo;
import com.tykj.dev.device.matching.subject.vo.TrusteeshipEquipSelectVo;
import com.tykj.dev.misc.base.StatusEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
@Service
@Slf4j
public class TrusteeshipBillServiceImpl implements TrusteeshipBillService {
@Resource
TrusteeshipBillDao trusteeshipBillDao;
@Resource
TrusteeshipEquipDao trusteeshipEquipDao;
@Override
public TrusteeshipBill saveInitTrusteeshipBill(TrusteeshipBill trusteeshipBill) {
List<TrusteeshipEquip> trusteeshipEquips = trusteeshipEquipDao.saveAll(trusteeshipBill.getTrusteeshipEquips());
trusteeshipBill.setTrusteeshipEquipJson(JSON.toJSONString(trusteeshipEquips));
trusteeshipBill.setFiles(FilesUtil.stringFileToList(trusteeshipBill.getFileRets()));
trusteeshipBill.setCount(trusteeshipEquips.size());
return trusteeshipBillDao.save(trusteeshipBill);
}
@Override
public TrusteeshipBill saveSendBackTrusteeshipBill(TrusteeshipBill trusteeshipBill) {
trusteeshipBill.setTrusteeshipEquipJson(JSON.toJSONString(trusteeshipBill.getTrusteeshipEquips()));
trusteeshipBill.setFiles(FilesUtil.stringFileToList(trusteeshipBill.getFileRets()));
trusteeshipBill.setCount(trusteeshipBill.getTrusteeshipEquips().size());
trusteeshipEquipDao.updateIdsToStatus(trusteeshipBill.getTrusteeshipEquips().stream().map(TrusteeshipEquip::getId).collect(Collectors.toList()), 2);
return trusteeshipBillDao.save(trusteeshipBill);
}
@Override
public Page<TrusteeshipBill> queryTrusteeshipBillSelectVo(TrusteeshipBillSelectVo trusteeshipBillSelectVo) {
Page<TrusteeshipBill> all = trusteeshipBillDao.findAll(getTrusteeshipBillBuilder(trusteeshipBillSelectVo).build(), trusteeshipBillSelectVo.getPageable());
all.forEach(trusteeshipBill -> {
trusteeshipBill.setFileRets(FilesUtil.stringFileToList(trusteeshipBill.getFiles()));
trusteeshipBill.setTrusteeshipEquips(JSON.parseArray(trusteeshipBill.getTrusteeshipEquipJson(),TrusteeshipEquip.class));
});
return all;
}
@Override
public Page<TrusteeshipEquip> queryTrusteeshipEquipSelectVo(TrusteeshipEquipSelectVo trusteeshipEquipSelectVo) {
return trusteeshipEquipDao.findAll(getPredicateBuilder(trusteeshipEquipSelectVo).build(),trusteeshipEquipSelectVo.getPageable());
}
private PredicateBuilder<TrusteeshipBill> getTrusteeshipBillBuilder(TrusteeshipBillSelectVo trusteeshipBillSelectVo) {
PredicateBuilder<TrusteeshipBill> predicateBuilder = Specifications.and();
if (trusteeshipBillSelectVo != null) {
if (trusteeshipBillSelectVo.getType() !=null){
predicateBuilder.eq("type",trusteeshipBillSelectVo.getType());
}
}
return predicateBuilder;
}
private PredicateBuilder<TrusteeshipEquip> getPredicateBuilder(TrusteeshipEquipSelectVo externalSelectVo) {
PredicateBuilder<TrusteeshipEquip> predicateBuilder = Specifications.and();
if (externalSelectVo != null) {
if (externalSelectVo.getName() != null) {
predicateBuilder.eq("name",externalSelectVo.getName());
}
if (externalSelectVo.getModel() != null) {
predicateBuilder.eq("model",externalSelectVo.getModel());
}
if (externalSelectVo.getUnitName() != null) {
predicateBuilder.eq("unitName",externalSelectVo.getUnitName());
}
if (externalSelectVo.getNum() != null) {
predicateBuilder.eq("num",externalSelectVo.getNum());
}
if (externalSelectVo.getForm() != null) {
predicateBuilder.eq("form",externalSelectVo.getForm());
}
if (externalSelectVo.getState() !=null){
predicateBuilder.eq("state",externalSelectVo.getState());
}
}
return predicateBuilder;
}
}
package com.tykj.dev.device.matching.subject.domin;
import com.lowagie.text.pdf.PRAcroForm;
import com.tykj.dev.device.file.entity.FileRet;
import com.tykj.dev.misc.base.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.annotations.Where;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.util.List;
@Data
@Entity
@EntityListeners(AuditingEntityListener.class)
@Where(clause = "delete_tag = 0")
@ApiModel("托管业务实体")
@Table(name = "zb_trusteeship_bill")
public class TrusteeshipBill extends BaseEntity {
@ApiModelProperty(value = "用户id")
private Integer userId;
@ApiModelProperty(value = "用户名称")
private String userName;
@ApiModelProperty(value = "单据数据")
@Column(name = "trusteeship_equip_json",columnDefinition = "TEXT")
private String trusteeshipEquipJson;
@ApiModelProperty(value = "数量")
private Integer count;
@ApiModelProperty(value = "1.入库 2退回")
private Integer type;
/**
* 文件db
*
*/
@ApiModelProperty(value = "文件db")
@Column(name = "files",columnDefinition = "TEXT")
private String files;
@Transient
@ApiModelProperty(value = "文件对象集合")
private List<FileRet> fileRets;
@ApiModelProperty(value = "列表数据")
@Transient
private List<TrusteeshipEquip> trusteeshipEquips;
}
package com.tykj.dev.device.matching.subject.domin;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.tykj.dev.misc.base.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.annotations.Where;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.Table;
@Data
@Entity
@EntityListeners(AuditingEntityListener.class)
@Where(clause = "delete_tag = 0")
@ApiModel("托管设备实体")
@Table(name = "zb_trusteeship_equip")
public class TrusteeshipEquip extends BaseEntity {
@Excel(name = "型号")
@ApiModelProperty(value = "型号")
private String model;
@ApiModelProperty(value = "序列号")
@Excel(name = "序列号")
private String num;
//名称
@ApiModelProperty(value = "名称")
@Excel(name = "名称")
private String name;
//形态
@ApiModelProperty(value = "形态")
@Excel(name = "形态")
private String form;
//类型
@ApiModelProperty(value = "类型")
private Integer type = 0;
//生命状态
@ApiModelProperty(value = "生命状态")
private String lifeState ="在库";
//存放位置
@ApiModelProperty(value = "存放位置")
private String storageLocation ="";
@ApiModelProperty(value = "备注")
@Excel(name = "备注")
private String remark;
@ApiModelProperty(value = "所属单位")
@Excel(name = "所属单位")
private String unitName;
@ApiModelProperty(value = "状态 0代管 1退回")
private Integer state = 0;
}
package com.tykj.dev.device.matching.subject.vo;
import com.tykj.dev.misc.base.CustomPage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("代管装备业务条件查询vo")
public class TrusteeshipBillSelectVo extends CustomPage {
@ApiModelProperty(value = "1.入库 2退回")
private Integer type;
}
package com.tykj.dev.device.matching.subject.vo;
import com.tykj.dev.misc.base.CustomPage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("代管装备列表条件查询vo")
public class TrusteeshipEquipSelectVo extends CustomPage {
@ApiModelProperty(value = "机型")
private String model;
@ApiModelProperty(value = "序列号")
private String num;
//名称
@ApiModelProperty(value = "名称")
private String name;
//形态
@ApiModelProperty(value = "形态")
private String form;
@ApiModelProperty(value = "单位名称")
private String unitName;
@ApiModelProperty(value = "状态 0代管 1退回")
private Integer state;
}
......@@ -35,13 +35,9 @@ public class DeviceSeqUtil {
// System.out.println(sdf.format(new Date()));
// System.out.println(System.currentTimeMillis());
List<String> list = new ArrayList<>();
list.add("2C807989002852");
list.add("B06A0502WDC");
List<String> continuousSeqs = getContinuousSeqs(list);
System.out.println(continuousSeqs);
String s = StringSplitUtil.stringListToString(continuousSeqs);
System.out.println(s);
List<String> strings = selectDeviceSeqs("AB-ABC-12A3B12345678901234567");
System.out.println(strings);
}
......@@ -573,4 +569,5 @@ public class DeviceSeqUtil {
}
}
......@@ -53,6 +53,7 @@
<module>dev-readmachine</module>
<module>dev-screen</module>
<module>dev-block</module>
<module>dev-emergency</module>
</modules>
<properties>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论