Commit eacb80da authored by xinglei's avatar xinglei

*)新增装备feign

parent 5ffc2849
package com.yeejoin.amos.boot.module.jcs.api.client;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.jcs.api.dto.EquipSpecificDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.EquipmentOnCarDto;
import com.yeejoin.amos.component.feign.config.InnerInvokException;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.List;
import java.util.Map;
/**
* 装备服务feign
*
* @author Dell
*/
@FeignClient(name = "AMOS-EQUIPMANAGE", path = "equip", configuration = {MultipartSupportConfig.class})
public interface EquipFeignClient {
/**
* 获取未列装人员装备列表数据
*
* @return
*/
@RequestMapping(value = "/equipSpecific/getAirEquipSpecificPage", method = RequestMethod.POST)
ResponseModel<Page<EquipmentOnCarDto>> getAirEquipSpecificPage(@RequestBody EquipSpecificDto var1) throws InnerInvokException;
/**
* 人员装备列装
*
* @return
*/
@RequestMapping(value = "/stock-detail/airport/person/bind", method = RequestMethod.POST)
ResponseModel<List<Object>> stockBindEquip(@RequestBody List<Long> ids) throws InnerInvokException;
/**
* 人员装备退装
*
* @return
*/
@RequestMapping(value = "/scrap/airport/person", method = RequestMethod.POST)
ResponseModel<Object> scrapEquip(@RequestBody String id) throws InnerInvokException;
/**
* 人员装备回库
*
* @return
*/
@RequestMapping(value = "/stock-detail/airport/person", method = RequestMethod.POST)
ResponseModel<Object> stockEquip(@RequestBody Map<String, Object> map) throws InnerInvokException;
/**
* 装备详情
*
* @return
*/
@RequestMapping(value = "/equipSpecific/getAirEquipSpecificDetail", method = RequestMethod.GET)
ResponseModel<Object> getAirEquipSpecificDetail(@RequestParam Long stockDetailId) throws InnerInvokException;
}
package com.yeejoin.amos.boot.module.jcs.api.client;
import feign.codec.Encoder;
import feign.form.spring.SpringFormEncoder;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
import org.springframework.cloud.openfeign.support.SpringEncoder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @Author: xl
* @Description:
* @Date: 2020/3/30 16:26
*/
@Configuration
public class MultipartSupportConfig {
@Autowired
private ObjectFactory<HttpMessageConverters> messageConverters;
@Bean
public Encoder feignFormEncoder() {
return new SpringFormEncoder(new SpringEncoder(messageConverters));
}
}
package com.yeejoin.amos.boot.module.jcs.api.dto;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.Data;
/**
* @Author: xl
* @Description: 装备分页查询
* @Date: 2021/6/23 11:29
*/
@Data
public class EquipSpecificDto extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 名称
*/
private String like;
/**
* 状态,默认查询未列装数据
*/
private Integer status = 1;
/**
* 装备分类code(人员装备【10000000】)
*/
private String categoryCode = "10000000";
/**
* 队伍ID
*/
private Long teamId;
/**
* 分页
*/
private Page page;
}
package com.yeejoin.amos.boot.module.jcs.api.dto;
import lombok.Data;
import java.util.Date;
/**
* @Author: xl
* @Description: 装备返回实例
* @Date: 2021/6/23 11:29
*/
@Data
public class EquipmentOnCarDto {
/**
* 车辆ID
*/
private Long carId;
/**
* 设备模板ID
*/
private Long equipmentDetailId;
/**
* 库存详情id
*/
private Long stockDetailId;
/**
* 库存数量
*/
private Double amount;
/**
* 设备实例ID
*/
private Long equipmentSpecificId;
/**
* 设备名称
*/
private String equipmentSpecificName;
/**
* 设备编码
*/
private String equipmentSpecificCode;
/**
* 装备类型
*/
private String equipmentName;
/**
* 状态
*/
private String status;
private String area;
private Long warehouseId;
private Long warehouseStructureId;
private Long equipmentOnCarId;
/**
* 创建日期
*/
private Date createDate;
private String equipDefinitionName;
}
package com.yeejoin.amos.boot.module.jcs.api.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 装备操作枚举
*
* @author DELL
*/
@Getter
@AllArgsConstructor
public enum EquipTypeEnum {
/**
* 退库,回库
*/
退装("scrap", "退装"),
回库("stock", "回库");
private String key;
private String name;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.yeejoin.amos.boot.module.jcs.api.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yeejoin.amos.boot.module.jcs.api.dto.EquipSpecificDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.EquipmentOnCarDto;
import com.yeejoin.amos.boot.module.jcs.api.entity.FirefightersJacket;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.List;
/**
* 消防人员配装记录 服务类
......@@ -11,4 +17,11 @@ import com.yeejoin.amos.boot.module.jcs.api.entity.FirefightersJacket;
*/
public interface IFirefightersJacketService extends IService<FirefightersJacket> {
ResponseModel<Page<EquipmentOnCarDto>> getAirEquipSpecificPage(EquipSpecificDto equipSpecificDto, int current, int size);
boolean saveOrUpdateBatch(Long firefightersId, List<EquipmentOnCarDto> equipmentOnCarDtos);
boolean update(String type, FirefightersJacket firefightersJacket);
ResponseModel<Object> getEquipByStockDetailId(Long stockDetailId);
}
package com.yeejoin.amos.boot.module.jcs.biz.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.biz.common.utils.NameUtils;
import com.yeejoin.amos.boot.module.jcs.api.dto.EquipSpecificDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.EquipmentOnCarDto;
import com.yeejoin.amos.boot.module.jcs.api.entity.FirefightersJacket;
import com.yeejoin.amos.boot.module.jcs.api.service.IFirefightersJacketService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
......@@ -35,118 +38,144 @@ import java.util.List;
@RequestMapping(value = "/firefighters-jacket")
public class FirefightersJacketController extends BaseController {
@Autowired
IFirefightersJacketService iFirefightersJacketService;
@Autowired
IFirefightersJacketService iFirefightersJacketService;
/**
* 新增消防人员配装记录
*
* @return
*/
@TycloudOperation(needAuth = true, ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/save", method = RequestMethod.POST)
@ApiOperation(httpMethod = "POST", value = "新增消防人员配装记录", notes = "新增消防人员配装记录")
@Transactional
public ResponseModel<Object> saveFirefightersJacket(HttpServletRequest request,
@RequestBody List<FirefightersJacket> firefightersJacket) {
iFirefightersJacketService.saveOrUpdateBatch(firefightersJacket);
return ResponseHelper.buildResponse(null);
}
/**
* 新增消防人员配装记录
*
* @return
*/
@TycloudOperation(needAuth = true, ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/save/{firefightersId}", method = RequestMethod.POST)
@ApiOperation(httpMethod = "POST", value = "新增消防人员配装记录", notes = "新增消防人员配装记录")
@Transactional
public ResponseModel<Object> saveFirefightersJacket(@ApiParam(value = "消防队员ID", required = true) @PathVariable Long firefightersId, @RequestBody List<EquipmentOnCarDto> equipmentOnCarDtos) {
boolean flag = iFirefightersJacketService.saveOrUpdateBatch(firefightersId, equipmentOnCarDtos);
if (!flag) {
throw new BadRequest("保存失败.");
}
return ResponseHelper.buildResponse(null);
}
/**
* 根据id删除
*
* @param id
* @return
*/
@TycloudOperation(needAuth = true, ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ApiOperation(httpMethod = "DELETE", value = "根据id删除", notes = "根据id删除")
public ResponseModel<Object> deleteById(HttpServletRequest request, @PathVariable Long id) {
iFirefightersJacketService.update(new UpdateWrapper<FirefightersJacket>().eq("sequence_nbr", id).set("is_delete", 1));
return ResponseHelper.buildResponse(null);
}
/**
* 删除数据(退装|回库)
*
* @param
* @return
*/
@TycloudOperation(needAuth = true, ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/{type}", method = RequestMethod.DELETE)
@ApiOperation(httpMethod = "DELETE", value = "删除数据", notes = "删除数据")
public ResponseModel<Object> deleteById(@PathVariable String type, @RequestBody FirefightersJacket firefightersJacket) {
boolean flag = iFirefightersJacketService.update(type, firefightersJacket);
if (!flag) {
throw new BadRequest("删除失败.");
}
return ResponseHelper.buildResponse(null);
}
/**
* 修改消防人员配装记录
*
* @return
*/
@TycloudOperation(needAuth = true, ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/updateById", method = RequestMethod.PUT)
@ApiOperation(httpMethod = "PUT", value = "修改消防人员配装记录", notes = "修改消防人员配装记录")
public ResponseModel<FirefightersJacket> updateByIdFirefightersJacket(HttpServletRequest request,
@RequestBody FirefightersJacket firefightersJacket) {
iFirefightersJacketService.updateById(firefightersJacket);
return ResponseHelper.buildResponse(firefightersJacket);
}
/**
* 修改消防人员配装记录
*
* @return
*/
@TycloudOperation(needAuth = true, ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/updateById", method = RequestMethod.PUT)
@ApiOperation(httpMethod = "PUT", value = "修改消防人员配装记录", notes = "修改消防人员配装记录")
public ResponseModel<FirefightersJacket> updateByIdFirefightersJacket(HttpServletRequest request,
@RequestBody FirefightersJacket firefightersJacket) {
iFirefightersJacketService.updateById(firefightersJacket);
return ResponseHelper.buildResponse(firefightersJacket);
}
/**
* 根据id查询
*
* @param id
* @return
*/
@TycloudOperation(needAuth = true, ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "根据id查询", notes = "根据id查询")
public ResponseModel<FirefightersJacket> selectById(HttpServletRequest request, @PathVariable Long id) {
QueryWrapper<FirefightersJacket> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("firefighters_id", id);
FirefightersJacket firefightersJacket = iFirefightersJacketService.getOne(queryWrapper);
return ResponseHelper.buildResponse(firefightersJacket);
}
/**
* 根据id查询
*
* @param id
* @return
*/
@TycloudOperation(needAuth = true, ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "根据id查询", notes = "根据id查询")
public ResponseModel<FirefightersJacket> selectById(HttpServletRequest request, @PathVariable Long id) {
QueryWrapper<FirefightersJacket> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("firefighters_id", id);
FirefightersJacket firefightersJacket = iFirefightersJacketService.getOne(queryWrapper);
return ResponseHelper.buildResponse(firefightersJacket);
}
/**
* 列表分页查询
*
* @return
*/
@TycloudOperation(needAuth = true, ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/list", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "列表分页查询", notes = "列表分页查询")
public ResponseModel<IPage<FirefightersJacket>> listPage(String pageNum, String pageSize, FirefightersJacket firefightersJacket) {
/**
* 列表分页查询
*
* @return
*/
@TycloudOperation(needAuth = true, ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/list", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "列表分页查询", notes = "列表分页查询")
public ResponseModel<IPage<FirefightersJacket>> listPage(String pageNum, String pageSize, FirefightersJacket firefightersJacket) {
Page<FirefightersJacket> pageBean;
QueryWrapper<FirefightersJacket> firefightersJacketQueryWrapper = new QueryWrapper<>();
Class<? extends FirefightersJacket> aClass = firefightersJacket.getClass();
Arrays.stream(aClass.getDeclaredFields()).forEach(field -> {
try {
field.setAccessible(true);
Object o = field.get(firefightersJacket);
if (o != null) {
Class<?> type = field.getType();
String name = NameUtils.camel2Underline(field.getName());
if (type.equals(Integer.class)) {
Integer fileValue = (Integer) field.get(firefightersJacket);
firefightersJacketQueryWrapper.eq(name, fileValue);
} else if (type.equals(Long.class)) {
Long fileValue = (Long) field.get(firefightersJacket);
firefightersJacketQueryWrapper.eq(name, fileValue);
} else if (type.equals(String.class)) {
String fileValue = (String) field.get(firefightersJacket);
firefightersJacketQueryWrapper.eq(name, fileValue);
} else if (type.equals(Date.class)) {
Date fileValue = (Date) field.get(firefightersJacket);
firefightersJacketQueryWrapper.eq(name, fileValue);
}else {
String fileValue = (String) field.get(firefightersJacket);
firefightersJacketQueryWrapper.eq(name, fileValue);
}
}
} catch (Exception e) {
throw new RuntimeException("系统异常");
}
});
IPage<FirefightersJacket> page;
if (StringUtils.isBlank(pageNum) || StringUtils.isBlank(pageSize)) {
pageBean = new Page<>(0, Long.MAX_VALUE);
} else {
pageBean = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
}
page = iFirefightersJacketService.page(pageBean, firefightersJacketQueryWrapper);
Page<FirefightersJacket> pageBean;
QueryWrapper<FirefightersJacket> firefightersJacketQueryWrapper = new QueryWrapper<>();
firefightersJacketQueryWrapper.eq("is_delete", 0);
Class<? extends FirefightersJacket> aClass = firefightersJacket.getClass();
Arrays.stream(aClass.getDeclaredFields()).forEach(field -> {
try {
field.setAccessible(true);
Object o = field.get(firefightersJacket);
if (o != null) {
Class<?> type = field.getType();
String name = NameUtils.camel2Underline(field.getName());
if (type.equals(Integer.class)) {
Integer fileValue = (Integer) field.get(firefightersJacket);
firefightersJacketQueryWrapper.eq(name, fileValue);
} else if (type.equals(Long.class)) {
Long fileValue = (Long) field.get(firefightersJacket);
firefightersJacketQueryWrapper.eq(name, fileValue);
} else if (type.equals(String.class)) {
String fileValue = (String) field.get(firefightersJacket);
firefightersJacketQueryWrapper.eq(name, fileValue);
} else if (type.equals(Date.class)) {
Date fileValue = (Date) field.get(firefightersJacket);
firefightersJacketQueryWrapper.eq(name, fileValue);
} else {
String fileValue = (String) field.get(firefightersJacket);
firefightersJacketQueryWrapper.eq(name, fileValue);
}
}
} catch (Exception e) {
throw new RuntimeException("系统异常");
}
});
IPage<FirefightersJacket> page;
if (StringUtils.isBlank(pageNum) || StringUtils.isBlank(pageSize)) {
pageBean = new Page<>(0, Long.MAX_VALUE);
} else {
pageBean = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
}
page = iFirefightersJacketService.page(pageBean, firefightersJacketQueryWrapper);
return ResponseHelper.buildResponse(page);
return ResponseHelper.buildResponse(page);
}
}
/**
* 分页查询设备列表(调用装备接口)
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "人员装备列表")
@RequestMapping(value = "/airEquipSpecificPage", method = RequestMethod.GET)
public ResponseModel<Page<EquipmentOnCarDto>> getAirEquipSpecificPage(int current, int size,
EquipSpecificDto equipSpecificDto) throws Exception {
return iFirefightersJacketService.getAirEquipSpecificPage(equipSpecificDto, current, size);
}
/**
* 查询设备详情(调用装备接口)
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "人员装备详情")
@RequestMapping(value = "/getEquipByStockDetailId/{stockDetailId}", method = RequestMethod.GET)
public ResponseModel<Object> getEquipByStockDetailId(@PathVariable Long stockDetailId) throws Exception {
return iFirefightersJacketService.getEquipByStockDetailId(stockDetailId);
}
}
package com.yeejoin.amos.boot.module.jcs.biz.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.module.jcs.api.client.EquipFeignClient;
import com.yeejoin.amos.boot.module.jcs.api.dto.EquipSpecificDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.EquipmentOnCarDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.FirefightersJacketDto;
import com.yeejoin.amos.boot.module.jcs.api.entity.FirefightersJacket;
import com.yeejoin.amos.boot.module.jcs.api.enums.EquipTypeEnum;
import com.yeejoin.amos.boot.module.jcs.api.mapper.FirefightersJacketMapper;
import com.yeejoin.amos.boot.module.jcs.api.service.IFirefightersJacketService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 消防人员配装记录 服务实现类
*
* @author tb
* @date 2021-06-07
*/
* 消防人员配装记录 服务实现类
*
* @author tb
* @date 2021-06-07
*/
@Service
public class FirefightersJacketServiceImpl extends BaseService<FirefightersJacketDto,FirefightersJacket,FirefightersJacketMapper> implements IFirefightersJacketService {
public class FirefightersJacketServiceImpl extends BaseService<FirefightersJacketDto, FirefightersJacket, FirefightersJacketMapper> implements IFirefightersJacketService {
@Autowired
private EquipFeignClient equipFeignClient;
@Override
public ResponseModel<Page<EquipmentOnCarDto>> getAirEquipSpecificPage(EquipSpecificDto equipSpecificDto, int current, int size) {
Page page = new Page(current, size);
equipSpecificDto.setPage(page);
ResponseModel<Page<EquipmentOnCarDto>> airEquipSpecificPage = equipFeignClient.getAirEquipSpecificPage(equipSpecificDto);
return airEquipSpecificPage;
}
@Override
public boolean saveOrUpdateBatch(Long firefightersId, List<EquipmentOnCarDto> equipmentOnCarDtos) {
List<Long> ids = equipmentOnCarDtos.stream().map(EquipmentOnCarDto::getStockDetailId).collect(Collectors.toList());
List<Object> result = equipFeignClient.stockBindEquip(ids).getResult();
if (result.size() > 0) {
List<FirefightersJacket> firefightersJackets = new ArrayList<>();
equipmentOnCarDtos.forEach(x -> {
FirefightersJacket firefightersJacket = new FirefightersJacket();
BeanUtils.copyProperties(x, firefightersJacket);
firefightersJacket.setEquipmentDetailId(x.getEquipmentSpecificId());
firefightersJacket.setEquipmentDetailName(x.getEquipmentSpecificName());
firefightersJacket.setEquipmentTypeName(x.getEquipDefinitionName());
firefightersJacket.setAllotmentTime(DateUtils.getDateNow());
firefightersJacket.setFirefightersId(firefightersId);
firefightersJackets.add(firefightersJacket);
});
saveOrUpdateBatch(firefightersJackets);
return true;
}
return false;
}
@Override
public boolean update(String type, FirefightersJacket firefightersJacket) {
ResponseModel<Object> objectResponseModel = null;
if (EquipTypeEnum.退装.getKey().equals(type)) {
objectResponseModel = equipFeignClient.scrapEquip(String.valueOf(firefightersJacket.getStockDetailId()));
} else if (EquipTypeEnum.回库.getKey().equals(type)) {
Map<String, Object> map = new HashMap<>();
map.put("stockDetailId", firefightersJacket.getStockDetailId());
objectResponseModel = equipFeignClient.stockEquip(map);
}
if (ValidationUtil.isEmpty(objectResponseModel)){
return false;
}
update(new UpdateWrapper<FirefightersJacket>().eq("sequence_nbr", firefightersJacket.getSequenceNbr()).set("is_delete", 1));
return true;
}
@Override
public ResponseModel<Object> getEquipByStockDetailId(Long stockDetailId) {
return equipFeignClient.getAirEquipSpecificDetail(stockDetailId);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment