提交 89c17c70 authored 作者: 邓砥奕's avatar 邓砥奕

[统计分析、列装]增加了核查统计、修改了列装

上级 9c0eb997
...@@ -26,6 +26,10 @@ public class GlobalMap { ...@@ -26,6 +26,10 @@ public class GlobalMap {
private static final Map<Integer, MatchingDeviceType> matchingDeviceTypeMap; private static final Map<Integer, MatchingDeviceType> matchingDeviceTypeMap;
private static final Map<Integer, DeviceInvisibleRange> deviceInvisibleRangeMap;
private static final Map<Integer,DeviceSecretLevel> deviceSecretLevelMap;
static { static {
statusEnumMap = Arrays.stream(StatusEnum.values()) statusEnumMap = Arrays.stream(StatusEnum.values())
.collect(Collectors.toMap(statusEnum -> statusEnum.id, Function.identity())); .collect(Collectors.toMap(statusEnum -> statusEnum.id, Function.identity()));
...@@ -41,6 +45,10 @@ public class GlobalMap { ...@@ -41,6 +45,10 @@ public class GlobalMap {
.collect(Collectors.toMap(storageType -> storageType.id, Function.identity())); .collect(Collectors.toMap(storageType -> storageType.id, Function.identity()));
matchingDeviceTypeMap = Arrays.stream(MatchingDeviceType.values()) matchingDeviceTypeMap = Arrays.stream(MatchingDeviceType.values())
.collect(Collectors.toMap(matchingDeviceType -> matchingDeviceType.id, Function.identity())); .collect(Collectors.toMap(matchingDeviceType -> matchingDeviceType.id, Function.identity()));
deviceInvisibleRangeMap = Arrays.stream(DeviceInvisibleRange.values())
.collect(Collectors.toMap(deviceInvisibleRange -> deviceInvisibleRange.id, Function.identity()));
deviceSecretLevelMap = Arrays.stream(DeviceSecretLevel.values())
.collect(Collectors.toMap(deviceSecretLevel -> deviceSecretLevel.id, Function.identity()));
} }
public static Map<Integer, StatusEnum> getStatusEnumMap() { public static Map<Integer, StatusEnum> getStatusEnumMap() {
...@@ -70,4 +78,12 @@ public class GlobalMap { ...@@ -70,4 +78,12 @@ public class GlobalMap {
public static Map<Integer, MatchingRange> getMatchingRangeMap() { public static Map<Integer, MatchingRange> getMatchingRangeMap() {
return matchingRangeMap; return matchingRangeMap;
} }
public static Map<Integer, DeviceSecretLevel> getDeviceSecretLevelMap() {
return deviceSecretLevelMap;
}
public static Map<Integer, DeviceInvisibleRange> getDeviceInvisibleRangeMap() {
return deviceInvisibleRangeMap;
}
} }
package com.tykj.dev.misc.base;
import lombok.AllArgsConstructor;
/**
* @author dengdiyi
* 装备可见范围枚举
*/
@AllArgsConstructor
public enum DeviceSecretLevel {
/**
* 省一级
*/
SECRETLEVEL_1(1, "绝密"),
/**
* 县一级
*/
SECRETLEVEL_2(2, "秘密"),
/**
* 市一级
*/
SECRETLEVEL_3(3, "机密"),
/**
* 县一级
*/
SECRETLEVEL_4(4, "无");
public Integer id;
public String name;
}
...@@ -4,6 +4,7 @@ import org.springframework.data.domain.Page; ...@@ -4,6 +4,7 @@ import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
...@@ -19,7 +20,7 @@ public class PageUtil { ...@@ -19,7 +20,7 @@ public class PageUtil {
*/ */
public static <T> Page<T> getPerPage(Integer page, Integer size, List<T> list, Pageable pageable) { public static <T> Page<T> getPerPage(Integer page, Integer size, List<T> list, Pageable pageable) {
//若List的size小于分页大小(只有一页) //若List的size小于分页大小(只有一页)
if (list.size() <= size) { if (list.size() <= size&&page==0) {
return new PageImpl<>(list, pageable, list.size()); return new PageImpl<>(list, pageable, list.size());
} else { } else {
//计算分了几页 //计算分了几页
...@@ -27,7 +28,7 @@ public class PageUtil { ...@@ -27,7 +28,7 @@ public class PageUtil {
int value = new Double(d).intValue(); int value = new Double(d).intValue();
//当前页数超出了最大页数 //当前页数超出了最大页数
if (page >= value) { if (page >= value) {
return null; return new PageImpl<>(new ArrayList<>(),pageable,0);
} else { } else {
//当前页的第一条记录的索引值 //当前页的第一条记录的索引值
int index = page * size; int index = page * size;
......
...@@ -3,10 +3,7 @@ package com.tykj.dev.device.packing.controller; ...@@ -3,10 +3,7 @@ package com.tykj.dev.device.packing.controller;
import com.tykj.dev.config.swagger.AutoDocument; import com.tykj.dev.config.swagger.AutoDocument;
import com.tykj.dev.device.packing.service.PackingLibraryService; import com.tykj.dev.device.packing.service.PackingLibraryService;
import com.tykj.dev.device.packing.subject.domin.PackingLibrary; import com.tykj.dev.device.packing.subject.domin.PackingLibrary;
import com.tykj.dev.device.packing.subject.vo.PackingDetailVo; import com.tykj.dev.device.packing.subject.vo.*;
import com.tykj.dev.device.packing.subject.vo.PackingLibraryConfirmVo;
import com.tykj.dev.device.packing.subject.vo.PackingLibrarySaveVo;
import com.tykj.dev.device.packing.subject.vo.PartSaveVo;
import com.tykj.dev.device.task.service.TaskLogService; import com.tykj.dev.device.task.service.TaskLogService;
import com.tykj.dev.device.task.service.TaskService; import com.tykj.dev.device.task.service.TaskService;
import com.tykj.dev.device.task.subject.bto.TaskBto; import com.tykj.dev.device.task.subject.bto.TaskBto;
...@@ -16,6 +13,7 @@ import com.tykj.dev.device.user.util.UserUtils; ...@@ -16,6 +13,7 @@ import com.tykj.dev.device.user.util.UserUtils;
import com.tykj.dev.misc.base.BusinessEnum; import com.tykj.dev.misc.base.BusinessEnum;
import com.tykj.dev.misc.base.StatusEnum; import com.tykj.dev.misc.base.StatusEnum;
import com.tykj.dev.misc.exception.ApiException; import com.tykj.dev.misc.exception.ApiException;
import com.tykj.dev.misc.utils.PageUtil;
import com.tykj.dev.misc.utils.ResultUtil; import com.tykj.dev.misc.utils.ResultUtil;
import com.tykj.dev.socket.MyWebSocket; import com.tykj.dev.socket.MyWebSocket;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -27,9 +25,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -27,9 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.Min; import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -145,4 +141,70 @@ public class PackingController { ...@@ -145,4 +141,70 @@ public class PackingController {
packingDetailVo.setTaskLogUserVos(taskLogUserVos); packingDetailVo.setTaskLogUserVos(taskLogUserVos);
return ResultUtil.success(packingDetailVo); return ResultUtil.success(packingDetailVo);
} }
@ApiOperation(value = "添加列装型号")
@PostMapping("/add/model")
public ResponseEntity addModel(@RequestBody @Validated AddModel addModel){
PackingLibrary packingLibrary = new PackingLibrary();
BeanUtils.copyProperties(addModel,packingLibrary);
packingLibrary.setIsRoot(1);
packingLibrary.setName(addModel.getModel());
packingLibraryService.addEntity(packingLibrary);
return ResponseEntity.ok("添加成功");
}
@ApiOperation(value = "添加列装装备")
@PostMapping("/add")
public ResponseEntity addPack(@RequestBody @Validated AddPack addPack){
PackingLibrary packingLibrary = addPack.toDo();
packingLibraryService.addEntity(packingLibrary);
return ResponseEntity.ok("添加成功");
}
@ApiOperation(value = "删除列装")
@PostMapping("/delete/{id}")
public ResponseEntity deleteById(@PathVariable("id") int id){
packingLibraryService.delete(id);
return ResponseEntity.ok("删除成功");
}
@ApiOperation(value = "查询父子结构列装")
@PostMapping("/select")
public ResponseEntity selectPack(@RequestBody SelectPack selectPack){
return ResultUtil.success(PageUtil.getPerPage(selectPack.getPage(),selectPack.getSize(),packingLibraryService.getInsertList(selectPack),selectPack.getPageable()));
}
@ApiOperation(value = "编辑列装型号")
@PostMapping("/update/model")
public ResponseEntity updateModel(@RequestBody PackingModelEdit packingModelEdit){
PackingLibrary packingLibrary = packingLibraryService.getOne(packingModelEdit.getPackingId());
if (packingLibrary.getIsRoot()==1){
if (packingModelEdit.getModel()!=null){
packingLibrary.setModel(packingModelEdit.getModel());
}
if (packingModelEdit.getInvisibleRange()!=null){
packingLibrary.setInvisibleRange(packingModelEdit.getInvisibleRange());
}
if (packingModelEdit.getSecretLevel()!=null){
packingLibrary.setSecretLevel(packingModelEdit.getSecretLevel());
}
if (packingModelEdit.getShowOrder()!=null){
packingLibrary.setShowOrder(packingModelEdit.getShowOrder());
}
if (packingModelEdit.getStatus()!=null){
packingLibrary.setStatus(packingModelEdit.getStatus());
}
packingLibraryService.update(packingLibrary);
}
else {
throw new ApiException("传入的列装id不是型号");
}
return ResponseEntity.ok("编辑成功");
}
@ApiOperation(value = "编辑列装装备")
@PostMapping("/update/device")
public ResponseEntity updateDevice(){
return ResponseEntity.ok("编辑成功");
}
} }
...@@ -6,10 +6,8 @@ import com.tykj.dev.device.library.service.DeviceLibraryService; ...@@ -6,10 +6,8 @@ import com.tykj.dev.device.library.service.DeviceLibraryService;
import com.tykj.dev.device.library.subject.domin.DeviceLibrary; import com.tykj.dev.device.library.subject.domin.DeviceLibrary;
import com.tykj.dev.device.packing.service.PackingLibraryService; import com.tykj.dev.device.packing.service.PackingLibraryService;
import com.tykj.dev.device.packing.subject.domin.PackingLibrary; import com.tykj.dev.device.packing.subject.domin.PackingLibrary;
import com.tykj.dev.device.packing.subject.vo.PackingEditVo; import com.tykj.dev.device.packing.subject.vo.*;
import com.tykj.dev.device.packing.subject.vo.PackingLibrarySelectVo; import com.tykj.dev.misc.utils.PageUtil;
import com.tykj.dev.device.packing.subject.vo.PackingLibraryUpdateVo;
import com.tykj.dev.device.packing.subject.vo.PartSaveVo;
import com.tykj.dev.misc.utils.ResultUtil; import com.tykj.dev.misc.utils.ResultUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -243,4 +241,11 @@ public class PackingLibraryController { ...@@ -243,4 +241,11 @@ public class PackingLibraryController {
public ResponseEntity selectInvalidDetail(@PathVariable("id") @Min(value = 1,message = "id不能小于1") int id) { public ResponseEntity selectInvalidDetail(@PathVariable("id") @Min(value = 1,message = "id不能小于1") int id) {
return ResultUtil.success(packingLibraryService.getInvalidDetail(id)); return ResultUtil.success(packingLibraryService.getInvalidDetail(id));
} }
@ApiOperation(value = "查询父子结构列装")
@PostMapping("/selectList")
public ResponseEntity selectPack(@RequestBody SelectPack selectPack){
return ResultUtil.success(packingLibraryService.getInsertList(selectPack));
}
} }
...@@ -2,6 +2,7 @@ package com.tykj.dev.device.packing.service; ...@@ -2,6 +2,7 @@ package com.tykj.dev.device.packing.service;
import com.tykj.dev.device.packing.subject.domin.PackingLibrary; import com.tykj.dev.device.packing.subject.domin.PackingLibrary;
import com.tykj.dev.device.packing.subject.vo.PackingLibrarySelectVo; import com.tykj.dev.device.packing.subject.vo.PackingLibrarySelectVo;
import com.tykj.dev.device.packing.subject.vo.SelectPack;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
...@@ -79,4 +80,10 @@ public interface PackingLibraryService { ...@@ -79,4 +80,10 @@ public interface PackingLibraryService {
* 通过id逻辑删除列装 * 通过id逻辑删除列装
*/ */
void delete(Integer id); void delete(Integer id);
/**
* @param selectPack 列装查询vo
* 获取父子结构列装列表
*/
List<PackingLibrary> getInsertList(SelectPack selectPack);
} }
...@@ -2,10 +2,12 @@ package com.tykj.dev.device.packing.service.impl; ...@@ -2,10 +2,12 @@ package com.tykj.dev.device.packing.service.impl;
import com.github.wenhao.jpa.PredicateBuilder; import com.github.wenhao.jpa.PredicateBuilder;
import com.github.wenhao.jpa.Specifications; import com.github.wenhao.jpa.Specifications;
import com.tykj.dev.config.GlobalMap;
import com.tykj.dev.device.packing.repository.PackingLibraryDao; import com.tykj.dev.device.packing.repository.PackingLibraryDao;
import com.tykj.dev.device.packing.service.PackingLibraryService; import com.tykj.dev.device.packing.service.PackingLibraryService;
import com.tykj.dev.device.packing.subject.domin.PackingLibrary; import com.tykj.dev.device.packing.subject.domin.PackingLibrary;
import com.tykj.dev.device.packing.subject.vo.PackingLibrarySelectVo; import com.tykj.dev.device.packing.subject.vo.PackingLibrarySelectVo;
import com.tykj.dev.device.packing.subject.vo.SelectPack;
import com.tykj.dev.device.user.util.UserUtils; import com.tykj.dev.device.user.util.UserUtils;
import com.tykj.dev.misc.exception.ApiException; import com.tykj.dev.misc.exception.ApiException;
import com.tykj.dev.misc.utils.GetTreeUtils; import com.tykj.dev.misc.utils.GetTreeUtils;
...@@ -15,7 +17,6 @@ import org.springframework.data.domain.Page; ...@@ -15,7 +17,6 @@ import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.Transient; import javax.persistence.Transient;
import java.lang.reflect.Field; import java.lang.reflect.Field;
...@@ -143,6 +144,39 @@ public class PackingLibraryServiceImpl implements PackingLibraryService { ...@@ -143,6 +144,39 @@ public class PackingLibraryServiceImpl implements PackingLibraryService {
packingLibraryDao.deleteById(id); packingLibraryDao.deleteById(id);
} }
/**
* @param selectPack 列装查询vo
* 获取父子结构列装列表
*/
@Override
public List<PackingLibrary> getInsertList(SelectPack selectPack) {
final String model = selectPack.getModel();
final String content = selectPack.getContent();
final String name = selectPack.getName();
final Integer status = selectPack.getStatus();
final Integer secretLevel = selectPack.getSecretLevel();
List<PackingLibrary> packingLibraryEntities = packingLibraryDao.findAll();
//返回父子结构
Map<Integer, PackingLibrary> nodeCollect =
packingLibraryEntities.stream().collect(Collectors.toMap(PackingLibrary::getId, packingLibrary -> packingLibrary));
return GetTreeUtils.parseTreeFromDown(
packingLibraryEntities,
PackingLibrary::getId,
packingLibrary -> Optional.ofNullable(nodeCollect.get(packingLibrary.getPartParentId())),
PackingLibrary::addChildNode
).stream().filter(packingLibrary -> {
boolean isSameModel = model == null || packingLibrary.getModel().equals(model);
boolean isSameName = name == null || packingLibrary.getName().equals(name);
boolean isSameStatus = status == null || packingLibrary.getStatus().equals(status);
boolean isSameSecretLevel = secretLevel == null || packingLibrary.getSecretLevel().equals(secretLevel);
boolean isContainContent = content == null
|| packingLibrary.getModel().contains(content)
|| GlobalMap.getDeviceInvisibleRangeMap().get(packingLibrary.getInvisibleRange()).name.contains(content)
|| GlobalMap.getDeviceSecretLevelMap().get(packingLibrary.getSecretLevel()).name.contains(content);
return isSameModel && isSameName && isSameStatus && isSameSecretLevel && isContainContent;
}).sorted(Comparator.comparing(PackingLibrary::getShowOrder)).collect(Collectors.toList());
}
private Specification<PackingLibrary> getSelectSpecification(PackingLibrarySelectVo packingLibrarySelectVo) { private Specification<PackingLibrary> getSelectSpecification(PackingLibrarySelectVo packingLibrarySelectVo) {
PredicateBuilder<PackingLibrary> predicateBuilder = Specifications.and(); PredicateBuilder<PackingLibrary> predicateBuilder = Specifications.and();
Integer level = userUtils.getCurrentUnitLevel(); Integer level = userUtils.getCurrentUnitLevel();
......
...@@ -52,6 +52,15 @@ public class PackingLibrary { ...@@ -52,6 +52,15 @@ public class PackingLibrary {
*/ */
@ApiModelProperty(value = "是不是配件(0:不是,1:是)") @ApiModelProperty(value = "是不是配件(0:不是,1:是)")
private Integer isPart; private Integer isPart;
@ApiModelProperty(value = "是不是配件(0:不是,1:是)")
private Integer isRoot;
@ApiModelProperty(value = "排序号")
private Integer showOrder;
@ApiModelProperty(value = "类型")
private Integer style;
/** /**
* 配件对应装备列装id * 配件对应装备列装id
*/ */
...@@ -93,9 +102,9 @@ public class PackingLibrary { ...@@ -93,9 +102,9 @@ public class PackingLibrary {
@ApiModelProperty(value = "可见范围") @ApiModelProperty(value = "可见范围")
private Integer invisibleRange; private Integer invisibleRange;
/** /**
* 类型 * 形态
*/ */
@ApiModelProperty(value = "类型") @ApiModelProperty(value = "形态")
private Integer type; private Integer type;
/** /**
* 列装性质 * 列装性质
......
package com.tykj.dev.device.packing.subject.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.stereotype.Repository;
import javax.validation.constraints.NotNull;
/**
* @author dengdiyi
*/
@Repository
@Data
@ApiModel("添加列装型号类")
public class AddModel {
@NotNull(message = "model不能为Null")
@ApiModelProperty(value = "型号")
private String model;
@ApiModelProperty(value = "密级")
private Integer secretLevel;
@NotNull(message = "invisibleRange不能为Null")
@ApiModelProperty(value = "可见范围")
private Integer invisibleRange;
@NotNull(message = "status不能为Null")
@ApiModelProperty(value = "列装状态")
private Integer status;
@NotNull(message = "showOrder不能为Null")
@ApiModelProperty(value = "排序号")
private Integer showOrder;
}
package com.tykj.dev.device.packing.subject.vo;
import com.tykj.dev.device.packing.subject.domin.PackingLibrary;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Repository;
import javax.validation.constraints.NotNull;
/**
* @author dengdiyi
*/
@Data
@ApiModel("列装存储类")
@Repository
public class AddPack {
@NotNull(message = "model不能为空")
@ApiModelProperty(value = "型号", example = "测试型号")
private String model;
@NotNull(message = "name不能为空")
@ApiModelProperty(value = "名称", example = "测试名称")
private String name;
@ApiModelProperty(value = "应用类型", example = "1")
private Integer applyType;
@ApiModelProperty(value = "配用范围", example = "1")
private Integer matchingRange;
@NotNull(message = "invisibleRange不能为空")
@ApiModelProperty(value = "可见范围", example = "1")
private Integer invisibleRange;
@NotNull(message = "type不能为空")
@ApiModelProperty(value = "形态", example = "1")
private Integer type;
@NotNull(message = "style不能为空")
@ApiModelProperty(value = "类型", example = "1")
private Integer style;
@NotNull(message = "secretLevel不能为空")
@ApiModelProperty(value = "密级(0:绝密,1:机密,2:秘密)", example = "1")
private Integer secretLevel;
@ApiModelProperty(value = "列装性质", example = "1")
private Integer nature;
@NotNull(message = "status不能为空")
@ApiModelProperty(value = "列装状态", example = "1")
private Integer status;
@ApiModelProperty(value = "生产单位", example = "测试型号")
private String prodUnit;
@ApiModelProperty(value = "创建单位", example = "测试创建单位")
private String createUnit;
@NotNull(message = "price不能为空")
@ApiModelProperty(value = "价格", example = "2.000.000")
private String price;
@ApiModelProperty(value = "照片名称", example = "没有先填一个空格")
private String imageName;
@ApiModelProperty(value = "照片路径", example = "没有先填一个空格")
private String imageUrl;
@ApiModelProperty(value = "附件名称", example = "没有先填一个空格")
private String fileName;
@ApiModelProperty(value = "附件路径", example = "没有先填一个空格")
private String fileUrl;
@ApiModelProperty(value = "父级ID", example = "1")
private Integer partParentId;
public PackingLibrary toDo() {
PackingLibrary packingLibraryEntity = new PackingLibrary();
BeanUtils.copyProperties(this, packingLibraryEntity);
packingLibraryEntity.setPackingStatus(2);
packingLibraryEntity.setIsRoot(0);
return packingLibraryEntity;
}
}
package com.tykj.dev.device.packing.subject.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.stereotype.Repository;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author dengdiyi
*/
@Repository
@Data
@ApiModel("列装型号编辑类")
public class PackingModelEdit {
@ApiModelProperty(value = "型号")
private String model;
@ApiModelProperty(value = "密级")
private Integer secretLevel;
@ApiModelProperty(value = "可见范围")
private Integer invisibleRange;
@ApiModelProperty(value = "列装状态")
private Integer status;
@ApiModelProperty(value = "排序号")
private Integer showOrder;
@ApiModelProperty(value = "列装装备id", example = "1")
@NotNull(message = "packingId不能为空")
private Integer packingId;
}
package com.tykj.dev.device.packing.subject.vo;
import com.tykj.dev.misc.base.CustomPage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @author dengdiyi
*/
@Data
@ApiModel("列装查询类")
public class SelectPack extends CustomPage {
@ApiModelProperty(value = "模糊查询关键字", example = "测试")
public String content;
@ApiModelProperty(value = "名称", example = "名称")
public String name;
@ApiModelProperty(value = "型号", example = "1234")
public String model;
@ApiModelProperty(value = "密级(0:绝密,1:机密,2:秘密)", example = "1")
private Integer secretLevel;
@ApiModelProperty(value = "列装状态")
private Integer status;
}
...@@ -20,7 +20,6 @@ import java.util.List; ...@@ -20,7 +20,6 @@ import java.util.List;
@Repository @Repository
public class SelfCheckSaveVo { public class SelfCheckSaveVo {
@NotNull(message = "taskId不能为空")
@Min(value = 1,message = "taskId不能小于1") @Min(value = 1,message = "taskId不能小于1")
@ApiModelProperty(name = "任务id", example = "1") @ApiModelProperty(name = "任务id", example = "1")
private Integer taskId; private Integer taskId;
......
...@@ -88,9 +88,8 @@ public class StatisticalController { ...@@ -88,9 +88,8 @@ public class StatisticalController {
*/ */
@ApiOperation(value = "查询各市核查情况数量") @ApiOperation(value = "查询各市核查情况数量")
@GetMapping("/confirmInspection/{type}") @GetMapping("/confirmInspection/{type}")
public ResponseEntity selectVerification(@PathVariable Integer type){ public ResponseEntity selectVerification(@PathVariable Integer type) throws ParseException{
List<Verification> nums=new ArrayList<>(); return ResponseEntity.ok(statisticalService.getConfirmCheck(type));
return ResponseEntity.ok(nums);
} }
/** /**
...@@ -119,9 +118,9 @@ public class StatisticalController { ...@@ -119,9 +118,9 @@ public class StatisticalController {
* @return 各市告警统计对象集合 * @return 各市告警统计对象集合
*/ */
@ApiOperation(value = "查询各市告警情况") @ApiOperation(value = "查询各市告警情况")
@GetMapping("/alarmSituation/detail") @GetMapping("/alarmSituation/detail/{type}")
public ResponseEntity selectAlarmSituationDetail(){ public ResponseEntity selectAlarmSituationDetail(@PathVariable("type") int type){
return ResponseEntity.ok(statisticalService.getRfidWarningDetail()); return ResponseEntity.ok(statisticalService.getRfidWarningDetail(type));
} }
/** /**
......
...@@ -43,15 +43,22 @@ public interface StatisticalService { ...@@ -43,15 +43,22 @@ public interface StatisticalService {
List<BusinessSituation> getBusinessNum(Integer type) throws ParseException; List<BusinessSituation> getBusinessNum(Integer type) throws ParseException;
/** /**
* 获取本季度各市告警统计信息 * @param type 类型(1:本季度,2:本年)
* 获取各市告警统计信息
*/ */
List<AlarmSituation> getRfidWarningDetail(); List<AlarmSituation> getRfidWarningDetail(Integer type);
/** /**
* 获取各市最近一次自查和核查装备数量 * 获取各市最近一次自查和核查装备数量
*/ */
List<Check> getCheckNum(); List<Check> getCheckNum();
/**
* @param type 类型(1:上半年,2:下半年)
* 获取核查统计信息
*/
List<Verification> getConfirmCheck(Integer type) throws ParseException;
/** /**
* 获取专管员概要信息统计 * 获取专管员概要信息统计
*/ */
......
...@@ -2,7 +2,10 @@ package com.tykj.dev.statistical.service.impl; ...@@ -2,7 +2,10 @@ package com.tykj.dev.statistical.service.impl;
import com.tykj.dev.device.confirmcheck.entity.cache.AreaCache; import com.tykj.dev.device.confirmcheck.entity.cache.AreaCache;
import com.tykj.dev.device.confirmcheck.entity.domain.DeviceCheckDetail; import com.tykj.dev.device.confirmcheck.entity.domain.DeviceCheckDetail;
import com.tykj.dev.device.confirmcheck.entity.domain.DeviceCheckStat;
import com.tykj.dev.device.confirmcheck.entity.vo.CheckDeviceStatVo;
import com.tykj.dev.device.confirmcheck.repository.DeviceCheckDetailDao; import com.tykj.dev.device.confirmcheck.repository.DeviceCheckDetailDao;
import com.tykj.dev.device.confirmcheck.repository.DeviceCheckStatDao;
import com.tykj.dev.device.finalcheck.entity.domain.FinalReport; import com.tykj.dev.device.finalcheck.entity.domain.FinalReport;
import com.tykj.dev.device.finalcheck.repisotry.FinalReportDao; import com.tykj.dev.device.finalcheck.repisotry.FinalReportDao;
import com.tykj.dev.device.library.repository.DeviceLibraryDao; import com.tykj.dev.device.library.repository.DeviceLibraryDao;
...@@ -23,6 +26,8 @@ import com.tykj.dev.device.user.subject.entity.Area; ...@@ -23,6 +26,8 @@ import com.tykj.dev.device.user.subject.entity.Area;
import com.tykj.dev.device.user.subject.entity.Units; import com.tykj.dev.device.user.subject.entity.Units;
import com.tykj.dev.device.user.subject.entity.User; import com.tykj.dev.device.user.subject.entity.User;
import com.tykj.dev.misc.exception.ApiException; import com.tykj.dev.misc.exception.ApiException;
import com.tykj.dev.misc.utils.JacksonUtil;
import com.tykj.dev.misc.utils.ResultUtil;
import com.tykj.dev.rfid.entity.domin.LibraryWarningLog; import com.tykj.dev.rfid.entity.domin.LibraryWarningLog;
import com.tykj.dev.rfid.repository.LibraryWarningLogDao; import com.tykj.dev.rfid.repository.LibraryWarningLogDao;
import com.tykj.dev.statistical.service.StatisticalService; import com.tykj.dev.statistical.service.StatisticalService;
...@@ -72,6 +77,9 @@ public class StatisticalServiceImpl implements StatisticalService { ...@@ -72,6 +77,9 @@ public class StatisticalServiceImpl implements StatisticalService {
@Autowired @Autowired
private DeviceCheckDetailDao deviceCheckDetailDao; private DeviceCheckDetailDao deviceCheckDetailDao;
@Autowired
private DeviceCheckStatDao deviceCheckStatDao;
/** /**
* 获取装备统计信息 * 获取装备统计信息
*/ */
...@@ -319,10 +327,11 @@ public class StatisticalServiceImpl implements StatisticalService { ...@@ -319,10 +327,11 @@ public class StatisticalServiceImpl implements StatisticalService {
} }
/** /**
* 获取本季度各市告警统计信息 * @param type 类型(1:本季度,2:本年)
* 获取各市告警统计信息
*/ */
@Override @Override
public List<AlarmSituation> getRfidWarningDetail() { public List<AlarmSituation> getRfidWarningDetail(Integer type) {
List<AlarmSituation> alarmSituations = new ArrayList<>(); List<AlarmSituation> alarmSituations = new ArrayList<>();
List<Area> areas = areaDao.findAreasByType(2); List<Area> areas = areaDao.findAreasByType(2);
//每个市进行统计 //每个市进行统计
...@@ -343,9 +352,21 @@ public class StatisticalServiceImpl implements StatisticalService { ...@@ -343,9 +352,21 @@ public class StatisticalServiceImpl implements StatisticalService {
//获取当前季度 //获取当前季度
Integer quarter = getQuarter(new Date()); Integer quarter = getQuarter(new Date());
//获取当前季度该区域所有告警记录 //获取当前季度该区域所有告警记录
List<LibraryWarningLog> libraryWarningLogs = libraryWarningLogDao.findAll().stream() List<LibraryWarningLog> libraryWarningLogs;
.filter(libraryWarningLog -> getQuarter(libraryWarningLog.getCreateTime()).equals(quarter)&&unitNames.contains(libraryWarningLog.getUnit())) if (type==1) {
libraryWarningLogs = libraryWarningLogDao.findAll().stream()
.filter(libraryWarningLog -> getQuarter(libraryWarningLog.getCreateTime()).equals(quarter) && unitNames.contains(libraryWarningLog.getUnit()))
.collect(Collectors.toList());
}
else if (type==2){
int year = new Date().getYear();
libraryWarningLogs = libraryWarningLogDao.findAll().stream()
.filter(libraryWarningLog -> libraryWarningLog.getCreateTime().getYear()==year && unitNames.contains(libraryWarningLog.getUnit()))
.collect(Collectors.toList()); .collect(Collectors.toList());
}
else {
throw new ApiException("type只能为1,2");
}
alarmSituation.setAlarmCount(libraryWarningLogs.size()); alarmSituation.setAlarmCount(libraryWarningLogs.size());
//获取盘库异常数量 //获取盘库异常数量
int inventoryNum = (int)libraryWarningLogs.stream().filter(libraryWarningLog -> libraryWarningLog.getWarningType()==2).count(); int inventoryNum = (int)libraryWarningLogs.stream().filter(libraryWarningLog -> libraryWarningLog.getWarningType()==2).count();
...@@ -400,7 +421,7 @@ public class StatisticalServiceImpl implements StatisticalService { ...@@ -400,7 +421,7 @@ public class StatisticalServiceImpl implements StatisticalService {
List<Units> units = unitsDao.findAllByAreaId(a.getId()); List<Units> units = unitsDao.findAllByAreaId(a.getId());
if (units.size()==1) { if (units.size()==1) {
//获取市单位名称 //获取市单位名称
String unitName = unitsDao.findAllByAreaId(a.getId()).get(0).getName(); String unitName = units.get(0).getName();
//筛选出当前单位已完成的自查和核查账单,按更新时间排序 //筛选出当前单位已完成的自查和核查账单,按更新时间排序
List<SelfCheckBill> selfCheckBillList = selfCheckBills.stream() List<SelfCheckBill> selfCheckBillList = selfCheckBills.stream()
.filter(selfCheckBill -> selfCheckBill.getCheckUnit().equals(unitName) && selfCheckBill.getCheckedCount() != null) .filter(selfCheckBill -> selfCheckBill.getCheckUnit().equals(unitName) && selfCheckBill.getCheckedCount() != null)
...@@ -422,6 +443,59 @@ public class StatisticalServiceImpl implements StatisticalService { ...@@ -422,6 +443,59 @@ public class StatisticalServiceImpl implements StatisticalService {
return checks; return checks;
} }
/**
* @param type 类型(1:上半年,2:下半年)
* 获取核查统计信息
*/
@Override
public List<Verification> getConfirmCheck(Integer type) throws ParseException{
List<Verification> verifications = new ArrayList<>();
//获取所有市
List<Area> areas = areaDao.findAreasByType(2);
//获取所有核查详情单
List<DeviceCheckDetail> deviceCheckDetails = deviceCheckDetailDao.findAll();
List<Date> dates;
if (type==1) {
dates = getFirstHalfYear();
}
else if (type==2) {
dates = getLastHalfYear();
}
else {
throw new ApiException("type只能为1,2");
}
//获取各市上半年自动核查
for (Area a:areas) {
Verification verification = new Verification();
int completeNum = 0;
int unCompleteNum =0;
verification.setAreaName(a.getName());
//获取所有区县区域id
List<Integer> sonAreas = areaDao.findAllByFatherId(a.getId()).stream().map(Area::getId).collect(Collectors.toList());
//获取所有区县单位名称
List<String> unitNames = unitsCache.findAll().stream().filter(units -> sonAreas.contains(units.getAreaId())).map(Units::getName).collect(Collectors.toList());
for (String unitName:unitNames){
//筛选出上半年的自动核查按时间排序
List<DeviceCheckDetail> deviceCheckDetailList = deviceCheckDetails.stream()
.filter(deviceCheckDetail -> deviceCheckDetail.getTitle().contains("自动")&& deviceCheckDetail.getTitle().contains(unitName) && Date.from(deviceCheckDetail.getCreateTime().atZone(ZoneId.systemDefault()).toInstant()).after(dates.get(0))&& Date.from(deviceCheckDetail.getCreateTime().atZone(ZoneId.systemDefault()).toInstant()).before(dates.get(1)))
.sorted(Comparator.comparing(DeviceCheckDetail::getCreateTime).reversed())
.collect(Collectors.toList());
if (deviceCheckDetailList.size()>0){
if (deviceCheckDetailList.get(0).getCheckStatus()==2){
completeNum++;
}
else {
unCompleteNum++;
}
}
}
verification.setCompleteCount(completeNum);
verification.setNoCompleteCount(unCompleteNum);
verifications.add(verification);
}
return verifications;
}
/** /**
* @param devLifeSector 装备生命状态添统计 * @param devLifeSector 装备生命状态添统计
* @param deviceLibraries 统计装备 * @param deviceLibraries 统计装备
...@@ -624,4 +698,5 @@ public class StatisticalServiceImpl implements StatisticalService { ...@@ -624,4 +698,5 @@ public class StatisticalServiceImpl implements StatisticalService {
return 4; return 4;
} }
} }
} }
package com.tykj.dev.statistical.vo; package com.tykj.dev.statistical.vo;
import lombok.Data;
/** /**
* @author zjm * @author zjm
* @version 1.0.0 * @version 1.0.0
...@@ -7,6 +9,7 @@ package com.tykj.dev.statistical.vo; ...@@ -7,6 +9,7 @@ package com.tykj.dev.statistical.vo;
* @Description 核查各市完成情况 * @Description 核查各市完成情况
* @createTime 2020年10月16日 10:30:00 * @createTime 2020年10月16日 10:30:00
*/ */
@Data
public class Verification { public class Verification {
/** /**
* 市 名称 * 市 名称
......
...@@ -395,7 +395,9 @@ public class TaskServiceImpl implements TaskService { ...@@ -395,7 +395,9 @@ public class TaskServiceImpl implements TaskService {
users.stream().filter(user -> user.getUnitsId().equals(taskUserVo.getOwnUnit())).forEach(user -> { users.stream().filter(user -> user.getUnitsId().equals(taskUserVo.getOwnUnit())).forEach(user -> {
stringBuffer.append(user.getName()).append(","); stringBuffer.append(user.getName()).append(",");
}); });
stringBuffer.deleteCharAt(stringBuffer.length()-1); if (stringBuffer.length()>0) {
stringBuffer.deleteCharAt(stringBuffer.length() - 1);
}
taskUserVo.setProcessingUser(stringBuffer.toString()); taskUserVo.setProcessingUser(stringBuffer.toString());
} }
else { else {
......
...@@ -328,7 +328,7 @@ public class LogAspect { ...@@ -328,7 +328,7 @@ public class LogAspect {
} }
break; break;
case 7: case 7:
DeviceCheckStatDao deviceCheckStatDao = SpringUtils.getBean("deviceCheckStatRepo"); DeviceCheckStatDao deviceCheckStatDao = SpringUtils.getBean("deviceCheckStatDao");
if (deviceCheckStatDao != null) { if (deviceCheckStatDao != null) {
getFieldsParam(deviceCheckStatDao.getOne(outPutTask.getBillId())); getFieldsParam(deviceCheckStatDao.getOne(outPutTask.getBillId()));
} }
......
...@@ -4,7 +4,7 @@ spring.profiles.active=@activatedProperties@ ...@@ -4,7 +4,7 @@ spring.profiles.active=@activatedProperties@
logging.file=/opt/eqlog/equip.log logging.file=/opt/eqlog/equip.log
spring.servlet.multipart.max-file-size=400MB spring.servlet.multipart.max-file-size=400MB
spring.servlet.multipart.max-request-size=400MB spring.servlet.multipart.max-request-size=400MB
spring.jpa.hibernate.ddl-auto=none spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=false spring.jpa.show-sql=false
spring.jpa.open-in-view=true spring.jpa.open-in-view=true
spring.main.allow-bean-definition-overriding=true spring.main.allow-bean-definition-overriding=true
......
...@@ -184,11 +184,11 @@ public class DeviceUseReportServiceImpl implements DeviceUseReportService { ...@@ -184,11 +184,11 @@ public class DeviceUseReportServiceImpl implements DeviceUseReportService {
} }
//筛选列装 //筛选列装
List<PackingLibrary> packingLibraryEntities = packingLibraryDao.findAll().stream() List<PackingLibrary> packingLibraryEntities = packingLibraryDao.findAll().stream()
.filter(packingLibraryEntity -> packingLibraryEntity.getPackingStatus() == 2 && packingLibraryEntity.getCreateTime().after(date) && packingLibraryEntity.getCreateTime().before(date2) && packingLibraryEntity.getIsPart() == 0) .filter(packingLibraryEntity -> packingLibraryEntity.getPackingStatus()!=null&&packingLibraryEntity.getPackingStatus() == 2 && packingLibraryEntity.getCreateTime().after(date) && packingLibraryEntity.getCreateTime().before(date2))
.collect(toList()); .collect(toList());
//筛选退装 //筛选退装
List<PackingLibrary> packingLibraryEntities2 = packingLibraryDao.findAll().stream() List<PackingLibrary> packingLibraryEntities2 = packingLibraryDao.findAll().stream()
.filter(packingLibraryEntity -> packingLibraryEntity.getPackingStatus() == 3 && packingLibraryEntity.getExitTime().after(date) && packingLibraryEntity.getExitTime().before(date2) && packingLibraryEntity.getIsPart() == 0) .filter(packingLibraryEntity -> packingLibraryEntity.getPackingStatus()!=null&&packingLibraryEntity.getPackingStatus() == 3 && packingLibraryEntity.getExitTime().after(date) && packingLibraryEntity.getExitTime().before(date2))
.collect(toList()); .collect(toList());
//添加列装数量 //添加列装数量
if (packingLibraryEntities.size() > 0) { if (packingLibraryEntities.size() > 0) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论