Commit e51bf6e4 by 李小惠

90909

parent 13a1290d
......@@ -18,11 +18,23 @@ public interface EquipmentSizeService extends IService<EquipmentSize> {
boolean updateSize(EquipmentSizeReq req);
ResponseResult addSize(Map<String, Object> msg);
ResponseResult getOneSize(Map<String, Object> msg);
ResponseResult deleteSize(Map<String, Object> msg);
ResponseResult updateSize(Map<String, Object> msg);
List<String> getAllSizeId(Map<String, Object> orgId);
boolean changeSizeState(EquipmentSizeReq req);
List<EquipmentSize> getAllSize(EquipmentSizeReq req);
ResponseResult changeSizeState(Map<String, Object> msg);
ResponseResult getAllSize(Map<String, Object> msg);
ResponseResult getSizeDevelop();
}
......@@ -12,6 +12,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import com.junmp.jyzb.mapper.EquipmentSizeMapper;
import java.math.BigDecimal;
import java.util.*;
import static com.junmp.jyzb.utils.CheckBlank.checkNotBlank;
......@@ -65,7 +66,7 @@ public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, E
size.setCode((String) msg.get("code"));
size.setName((String) msg.get("name"));
size.setNote((String) msg.get("note"));
size.setPrice((Double) msg.get("price"));
size.setPrice((BigDecimal) msg.get("price"));
size.setEpcType((Integer) msg.get("epcType"));
equipmentSizeMapper.addSize(size);
......@@ -132,7 +133,7 @@ public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, E
size.setName((String) msg.get("name"));
size.setNote((String) msg.get("note"));
size.setUpdateTime(currentDate);
size.setPrice((Double) msg.get("price"));
size.setPrice((BigDecimal) msg.get("price"));
//size.setState((Integer) msg.get("state"));
size.setEpcType((Integer) msg.get("epcType"));
equipmentSizeMapper.updateSize(size);
......@@ -186,5 +187,5 @@ public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, E
List<Map<String,Object>> returnMsg = equipmentSizeMapper.getSizeDevelop();
return new ResponseResult(HttpStatus.SUCCESS, ReturnMsg.PASS,returnMsg);
}
}
}
package com.junmp.jyzb.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.junmp.jyzb.api.bean.req.EquipmentSizeReq;
import com.junmp.jyzb.api.bean.req.ProductReq;
import com.junmp.jyzb.api.exception.enums.ProductExceptionEnum;
import com.junmp.jyzb.api.util.GenCodeUtil;
import com.junmp.jyzb.entity.EquipmentSize;
import com.junmp.jyzb.entity.Product;
import com.junmp.jyzb.mapper.EquipmentTypeMapper;
import com.junmp.jyzb.service.EquipmentSizeService;
import com.junmp.jyzb.utils.DateTimeUtil;
import com.junmp.jyzb.utils.HttpStatus;
import com.junmp.jyzb.utils.ResponseResult;
import com.junmp.jyzb.utils.ReturnMsg;
import com.junmp.v2.common.exception.base.ServiceException;
import com.junmp.v2.common.util.BeanPlusUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import com.junmp.jyzb.mapper.EquipmentSizeMapper;
import java.math.BigDecimal;
import java.util.*;
import static com.junmp.jyzb.utils.CheckBlank.checkNotBlank;
@Service
public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, EquipmentSize> implements EquipmentSizeService {
@Resource
private EquipmentSizeMapper equipmentSizeMapper;
@Resource
private EquipmentTypeMapper equipmentTypeMapper;
private static final String REDIS_SIZE = "Size_";
//@Override
public ResponseResult addSize(Map<String, Object> msg) {
try {
checkNotBlank(msg.get("typeId"), "typeId不能为空");
checkNotBlank(msg.get("code"), "code不能为空");
checkNotBlank(msg.get("name"), "name不能为空");
//checkNotBlank((String) msg.get("note"), "note不能为空");
//Objects.requireNonNull(msg.get("price"), "price不能为空");
Objects.requireNonNull(msg.get("epcType"), "epcType不能为空");
} catch (IllegalArgumentException e) {
return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,e.getMessage());
}
//TODO 查询是否有重复的code
// List<String> sizeCodeFlag = equipmentSizeMapper.getSizeByCode((String) msg.get("code"));
// if (!sizeCodeFlag.isEmpty()){
// return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,"装备号型码已存在");
// }
//todo typeId只能是最下级的
// List<String> resultId = equipmentTypeMapper.getLowestTypeId();
// if (!resultId.contains(msg.get("typeId"))){
// return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,"typeId只能是最下一级");
// }
EquipmentSize size =new EquipmentSize();
//生成一个uuid
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
//生成当前时间
Date currentDate = DateTimeUtil.getCurrentDateTime();
size.setId(uuid);
size.setCreateTime(currentDate);
size.setUpdateTime(currentDate);
size.setTypeId((String) msg.get("typeId"));
size.setCode((String) msg.get("code"));
size.setName((String) msg.get("name"));
size.setNote((String) msg.get("note"));
<<<<<<< HEAD
size.setPrice((BigDecimal) msg.get("price"));
=======
// size.setPrice((Double) msg.get("price"));
>>>>>>> 2d1905eb57c664c7853f98789c36483e5ba60371
size.setEpcType((Integer) msg.get("epcType"));
equipmentSizeMapper.addSize(size);
return new ResponseResult(HttpStatus.SUCCESS, ReturnMsg.PASS,uuid);
}
//@Override
public ResponseResult getOneSize(Map<String,Object> msg) {
try {
checkNotBlank(msg.get("id"), "id不能为空");
} catch (IllegalArgumentException e) {
return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,e.getMessage());
}
String sizeId = msg.get("id").toString();
Map<String, Object> oneSize = equipmentSizeMapper.getOneSize(sizeId);
return new ResponseResult(HttpStatus.SUCCESS,ReturnMsg.PASS,oneSize);
}
//@Override
public ResponseResult deleteSize(Map<String, Object> msg) {
// 进行参数校验
try {
checkNotBlank(msg.get("sizeList"), "sizeList不能为空");
} catch (IllegalArgumentException e) {
return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,e.getMessage());
}
List<Object> sizeList = (List<Object>) msg.get("sizeList");
for (Object sizeId:sizeList){
equipmentSizeMapper.deleteSize(sizeId.toString());
}
return new ResponseResult(HttpStatus.SUCCESS,ReturnMsg.PASS);
}
//@Override
public ResponseResult updateSize(Map<String, Object> msg) {
try {
checkNotBlank(msg.get("id"), "id不能为空");
checkNotBlank(msg.get("typeId"), "typeId不能为空");
checkNotBlank(msg.get("code"), "code不能为空");
checkNotBlank(msg.get("name"), "name不能为空");
Objects.requireNonNull(msg.get("epcType"), "epcType不能为空");
} catch (IllegalArgumentException e) {
return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,e.getMessage());
}
//todo 判断code是否重复
// //查询是否有重复的code
// List<String> sizeCodeFlag = equipmentSizeMapper.getSizeByCode((String) msg.get("code"));
// //判断code是否有变动
// String oldCode = equipmentSizeMapper.getCodeById(msg.get("id").toString());
// if ()
// if (!sizeCodeFlag.isEmpty()){
// return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,"装备号型码已存在");
// }
EquipmentSize size =new EquipmentSize();
Date currentDate = DateTimeUtil.getCurrentDateTime();
//police.setId(uuid);
size.setId((String) msg.get("id"));
size.setTypeId((String) msg.get("typeId"));
size.setCode((String) msg.get("code"));
size.setName((String) msg.get("name"));
size.setNote((String) msg.get("note"));
size.setUpdateTime(currentDate);
<<<<<<< HEAD
size.setPrice((BigDecimal) msg.get("price"));
=======
// size.setPrice((Double) msg.get("price"));
>>>>>>> 2d1905eb57c664c7853f98789c36483e5ba60371
//size.setState((Integer) msg.get("state"));
size.setEpcType((Integer) msg.get("epcType"));
equipmentSizeMapper.updateSize(size);
return new ResponseResult(HttpStatus.SUCCESS,ReturnMsg.PASS);
}
//@Override
public ResponseResult changeSizeState(Map<String, Object> msg) {
try {
checkNotBlank(msg.get("id"), "id不能为空");
checkNotBlank(msg.get("state"), "state不能为空");
} catch (IllegalArgumentException e) {
return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,e.getMessage());
}
EquipmentSize size =new EquipmentSize();
size.setId(msg.get("id").toString());
size.setState((Integer) msg.get("state"));
equipmentSizeMapper.changeSizeState(size);
return new ResponseResult(HttpStatus.SUCCESS, ReturnMsg.PASS);
}
//@Override
public ResponseResult getAllSize(Map<String, Object> msg) {
try {
checkNotBlank(msg.get("typeId"), "typeId不能为空");
} catch (IllegalArgumentException e) {
return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,e.getMessage());
}
List<Map<String, Object>> allSize=new ArrayList<>();
List<String> allSizeId =getAllSizeId(msg);
for (String sizeId :allSizeId){
Map<String, Object> sizeMsg = equipmentSizeMapper.getOneSize(sizeId);
allSize.add(sizeMsg);
}
return new ResponseResult(HttpStatus.SUCCESS,ReturnMsg.PASS,allSize);
}
@Override
public List<String> getAllSizeId(Map<String, Object> typeId) {
List<String> msg = equipmentSizeMapper.getAllSizeId(typeId.get("typeId").toString());
return msg;
}
@Override
public ResponseResult getSizeDevelop() {
List<Map<String,Object>> returnMsg = equipmentSizeMapper.getSizeDevelop();
return new ResponseResult(HttpStatus.SUCCESS, ReturnMsg.PASS,returnMsg);
}
@Override
public boolean addSize(EquipmentSizeReq req) {
EquipmentSize size = new EquipmentSize();
BeanPlusUtil.copyProperties(req, size);
return this.save(size);
}
@Override
public EquipmentSize getOneSize(EquipmentSizeReq req) {
//LambdaQueryWrapper<EquipmentSize> wrapper = createWrapperById(req);
return this.getById(req);
}
private LambdaQueryWrapper<EquipmentSize> createWrapperById(EquipmentSizeReq req) {
LambdaQueryWrapper<EquipmentSize> wrapper = new LambdaQueryWrapper<>();
if (ObjectUtil.isEmpty(req)) {
return wrapper;
}
//根据id编码查询
wrapper.eq(ObjectUtil.isNotEmpty(req.getId()), EquipmentSize::getId, req.getId());
wrapper.orderByDesc(EquipmentSize::getCreateTime);
return wrapper;
}
@Override
public boolean deleteSize(EquipmentSizeReq req) {
EquipmentSize size = querySize(req);
this.removeById(req.getId());
return true;
}
@Override
public boolean updateSize(EquipmentSizeReq req) {
EquipmentSize size = this.querySize(req);
BeanPlusUtil.copyProperties(req, size);
return this.updateById(size);
}
@Override
public boolean changeSizeState(EquipmentSizeReq req) {
EquipmentSize size = this.querySize(req);
BeanPlusUtil.copyProperties(req, size);
return this.updateById(size);
}
@Override
public List<EquipmentSize> getAllSize(EquipmentSizeReq req) {
LambdaQueryWrapper<EquipmentSize> wrapper = createWrapper(req);
return this.list(wrapper);
}
private EquipmentSize querySize(EquipmentSizeReq req) {
EquipmentSize app = this.getById(req.getId());
if (ObjectUtil.isNull(app)) {
throw new ServiceException(ProductExceptionEnum.SIZE_NOT_EXIST);
}
return app;
}
private LambdaQueryWrapper<EquipmentSize> createWrapper(EquipmentSizeReq req) {
LambdaQueryWrapper<EquipmentSize> wrapper = new LambdaQueryWrapper<>();
if (ObjectUtil.isEmpty(req)) {
return wrapper;
}
//根据业务编码查询
wrapper.like(ObjectUtil.isNotEmpty(req.getTypeId()), EquipmentSize::getTypeId, req.getTypeId());
//根据名称模糊查询
wrapper.like(ObjectUtil.isNotEmpty(req.getName()), EquipmentSize::getName, req.getName());
wrapper.orderByDesc(EquipmentSize::getCreateTime);
return wrapper;
}
}
package com.junmp.jyzb.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.junmp.jyzb.api.bean.req.InventoryReq;
import com.junmp.jyzb.entity.EquipmentSize;
import com.junmp.jyzb.entity.EquipmentType;
import com.junmp.jyzb.entity.PubOrg;
import com.junmp.jyzb.entity.Inventory;
import com.junmp.jyzb.service.CabinetService;
import com.junmp.jyzb.service.InventoryService;
import com.junmp.jyzb.service.WarehouseService;
import com.junmp.jyzb.utils.HttpStatus;
import com.junmp.jyzb.utils.ResponseResult;
import com.junmp.jyzb.utils.ReturnData;
import com.junmp.jyzb.utils.ReturnMsg;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import com.junmp.jyzb.mapper.InventoryMapper;
import java.math.BigDecimal;
import java.util.*;
import static com.junmp.jyzb.utils.CheckBlank.checkNotBlank;
@Service
public class InventoryServiceImpl extends ServiceImpl<InventoryMapper, Inventory> implements InventoryService {
@Resource
private InventoryMapper inventoryMapper;
@Resource
private EquipmentTypeServiceImpl equipmentTypeService;
@Resource
private PubOrgServiceImpl PubOrgService;
@Resource
private EquipmentSizeServiceImpl equipmentSizeService;
@Resource
private WarehouseService warehouseService;
@Resource
private CabinetService cabinetService;
@Override
public InventoryDto getInventoryDetail(InventoryReq req) {
Inventory invMap=this.getById(req.getID());
if (invMap == null) {
return null;
}
InventoryDto bean = BeanUtil.toBean(invMap, InventoryDto.class);
// 查询与库存表关联的其他数据
String orgName= PubOrgService.getById(invMap.getOrgId()).getOrgName();
String TypeName = equipmentTypeService.getById(invMap.getTypeId()).getName();
String SizeName = equipmentSizeService.getById(invMap.getSizeId()).getName();
// 创建并填充对象
bean.setSizeName(SizeName);
bean.setTypeName(TypeName);
bean.setOrgName(orgName);
// 填充其他关联信息的字段和对象引用
return bean;
}
@Override
public ResponseResult getEquipmentInfo(Map<String, Object> inMsg) {
//参数校验
try {
checkNotBlank(inMsg.get("queryType"), "queryType不能为空");
checkNotBlank(inMsg.get("typeId"), "typeId不能为空");
} catch (IllegalArgumentException e) {
return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,e.getMessage());
}
//解析json中的信息
String queryType = inMsg.get("queryType").toString();
String idMsg = inMsg.get("typeId").toString();
//根据传入的queryType来辨别要查询什么信�
if (queryType.equals("org") || queryType.equals("warehouse") || queryType.equals("cabinet")){
Map<String,Object> returnMsg = getLocationEquipmentInfo(queryType,idMsg);
return new ResponseResult(HttpStatus.SUCCESS, ReturnMsg.PASS,returnMsg);
}else {
return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,"输入的queryType信息有误");
}
}
private Map<String, Object> getLocationEquipmentInfo(String queryType, String idMsg) {
List<Map<String, Object>> allMsg = inventoryMapper.getLocationInventory(queryType,idMsg);
Map<String, Object> resultMap = new HashMap<>();
for (Map<String, Object> msg : allMsg) {
String locationId = msg.get("locationId").toString();
String locationName = msg.get("locationName").toString();
String typeId = msg.get("typeId").toString();
String typeName = msg.get("typeName").toString();
String sizeId = msg.get("sizeId").toString();
String sizeName = msg.get("sizeName").toString();
int number = (int) msg.get("number");
BigDecimal priceBigDecimal = (BigDecimal) msg.get("price");
float price = priceBigDecimal.floatValue();
//检查resultMap中是否存在orgId
if (resultMap.containsKey(locationId)) {
// 获取现有组织级数�
Map<String, Object> orgData = (Map<String, Object>) resultMap.get(locationId);
List<Map<String, Object>> orgTypeList = (List<Map<String, Object>>) orgData.get("typeList");
// 检查组织类型列表中是否存在typeId
boolean typeExist = false;
for (Map<String, Object> typeData : orgTypeList) {
if (typeId.equals(typeData.get("typeId"))) {
// 获取现有的类型级别数�
List<Map<String, Object>> sizeList = (List<Map<String, Object>>) typeData.get("sizeList");
sizeList.add(createSizeData(sizeId,sizeName, number,price)); //sizeList中记录number的信�
int typeNumber = (int) typeData.get("typeNum");
float typePrice = (float) typeData.get("typeTotalPrice");
typeData.put("typeNum", typeNumber + number); //计算装备数量
typeData.put("typeTotalPrice", typePrice + price);
typeExist = true;
break;
}
}
// 如果 orgTypeList 中不包含 typeId,则创建新的类型级别数据
if (!typeExist) {
Map<String, Object> typeData = new HashMap<>();
typeData.put("typeId", typeId);
typeData.put("typeName", typeName);
typeData.put("typeNum", number);
typeData.put("typeTotalPrice", price);
List<Map<String, Object>> sizeList = new ArrayList<>();
sizeList.add(createSizeData(sizeId,sizeName, number,price));
typeData.put("sizeList", sizeList);
orgTypeList.add(typeData);
}
// 更新组织级别数据
int orgNumber = (int) orgData.get("locationNum");
float orgPrice = (float) orgData.get("totalPrice");
orgData.put("locationNum", orgNumber + number);
orgData.put("totalPrice", orgPrice + price);
} else {
// 创建新的组织级别数据
Map<String, Object> orgData = new HashMap<>();
orgData.put("locationType", queryType);
orgData.put("locationId", locationId);
orgData.put("locationName", locationName);
orgData.put("locationNum", number);
orgData.put("totalPrice", price);
List<Map<String, Object>> orgTypeList = new ArrayList<>();
Map<String, Object> typeData = new HashMap<>();
typeData.put("typeId", typeId);
typeData.put("typeName", typeName);
typeData.put("typeNum", number);
typeData.put("typeTotalPrice", price);
List<Map<String, Object>> sizeList = new ArrayList<>();
sizeList.add(createSizeData(sizeId,sizeName, number,price));
typeData.put("sizeList", sizeList);
orgTypeList.add(typeData);
orgData.put("typeList", orgTypeList);
resultMap.put(locationId, orgData);
}
}
Map<String,Object> returnMsg = (Map<String, Object>) resultMap.get(idMsg);
return returnMsg;
}
private static Map<String, Object> createSizeData(String sizeId,String sizeName, int number,float price) {
Map<String, Object> sizeData = new HashMap<>();
sizeData.put("sizeId", sizeId);
sizeData.put("sizeName", sizeName);
sizeData.put("sizeNum", number);
sizeData.put("sizeTotalPrice", price);
return sizeData;
}
@Override
public ResponseResult setInventoryMsg(){
inventoryMapper.deleteAllMsg(); //清空数据库中已存在的信息
inventoryMapper.setOrgInventory(); //放入组织机构信息汇�
inventoryMapper.setCabinetInventory(); //放入组织机构信息汇�
inventoryMapper.setWarehouseInventory(); //放入组织机构信息汇�
return new ResponseResult(HttpStatus.SUCCESS, ReturnMsg.PASS);
}
@Override
public ResponseResult updateInventoryNum(Map<String, Object> msg) {
//参数校验
try {
checkNotBlank(msg.get("locationType"), "locationType不能为空");
} catch (IllegalArgumentException e) {
return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,e.getMessage());
}
String locationType = msg.get("locationType").toString();
if (!locationType.equals("warehouse") && !locationType.equals("cabinet")){
return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,"输入的locationType值有�");
}else if(locationType.equals("warehouse")){
warehouseService.setWarehouseInventory(msg);
}else if(locationType.equals("cabinet")){
cabinetService.setCabinetInventory(msg);
}
return new ResponseResult(HttpStatus.SUCCESS, ReturnMsg.PASS);
}
@Override
public ResponseResult getInventoryList(Map<String, Object> msg) {
//参数校验
try {
checkNotBlank(msg.get("queryType"), "queryType不能为空");
checkNotBlank(msg.get("typeCode"), "typeCode不能为空");
checkNotBlank(msg.get("typeId"), "typeId不能为空");
checkNotBlank(msg.get("sizeId"), "sizeId不能为空");
} catch (IllegalArgumentException e) {
return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,e.getMessage());
}
//解析json中的信息
String queryType = msg.get("queryType").toString();
String typeCode = msg.get("typeCode").toString();
String typeId = msg.get("typeId").toString();
String sizeId = msg.get("sizeId").toString();
//根据传入的queryType来辨别要查询什么信�
if (queryType.equals("org") || queryType.equals("warehouse") || queryType.equals("cabinet")){
List<Map<String,Object>> returnMsg = inventoryMapper.getInventoryList(queryType,typeCode,typeId,sizeId);
return new ResponseResult(HttpStatus.SUCCESS, ReturnMsg.PASS,returnMsg);
}else {
return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,"输入的queryType信息有误");
}
}
@Override
public ResponseResult getInventoryByOrgId(Map<String, Object> msg) {
//参数校验
try {
checkNotBlank(msg.get("orgId"), "orgId不能为空");
} catch (IllegalArgumentException e) {
return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,e.getMessage());
}
String orgId = msg.get("orgId").toString();
List<Map<String, Object>> returnMsg = inventoryMapper.getInventoryByOrgId(orgId);
return new ResponseResult(HttpStatus.SUCCESS, ReturnMsg.PASS,returnMsg);
}
@Override
public ResponseResult getInventoryDevelop() {
return null;
}
@Override
public ResponseResult InvertoryBindBox(Map<String, Object> msg) {
//参数校验
try {
checkNotBlank(msg.get("inventoryId"), "inventoryId不能为空");
checkNotBlank(msg.get("locationId"), "locationId不能为空");
} catch (IllegalArgumentException e) {
return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,e.getMessage());
}
//将装备和箱门进行绑定(简单来 说就是更新数据库中的单条记录信息)
Inventory inventory = inventoryMapper.selectOne(new LambdaQueryWrapper<Inventory>()
.eq(Inventory::getID, msg.get("inventoryId"))
.eq(Inventory::getLocationId, msg.get("locationId")));
if (Objects.isNull(inventory)){
return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR, ReturnData.NO_DATA);
}
inventory.setLocationId((String) msg.get("locationId"));
inventoryMapper.updateById(inventory);
return new ResponseResult(HttpStatus.SUCCESS, ReturnMsg.PASS,"绑定成功");
}
/**
* @Author: Zhaojw
* @Description: 生成lambda表达式
* @DateTime: 2023/7/20 13:08
* @Params:
* @Return
*/
private LambdaQueryWrapper<Inventory> createWrapper(InventoryReq req) {
LambdaQueryWrapper<Inventory> wrapper = new LambdaQueryWrapper<>();
if (ObjectUtil.isEmpty(req)) {
return wrapper;
}
//根据库存ID查询
wrapper.eq(ObjectUtil.isNotEmpty(req.getID()), Inventory::getID, req.getID());
//根据epc模糊查询
wrapper.like(ObjectUtil.isNotEmpty(req.getEpc()), Inventory::getEpc, req.getEpc());
//根据位置
wrapper.eq(ObjectUtil.isNotEmpty(req.getLocationId()), Inventory::getLocationId, req.getLocationId());
wrapper.orderByDesc(Inventory::getUpdateTime);
return wrapper;
}
}
package com.junmp.jyzb.service.impl;
import com.junmp.jyzb.entity.PubOrg;
import com.junmp.jyzb.utils.HttpStatus;
import com.junmp.jyzb.utils.RedisUtils;
import com.junmp.jyzb.utils.ResponseResult;
import com.junmp.jyzb.utils.ReturnMsg;
import com.sun.javafx.collections.MappingChange;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import com.junmp.jyzb.mapper.PubOrgMapper;
import com.junmp.jyzb.service.PubOrgService;
import java.math.BigInteger;
import java.util.*;
import static com.junmp.jyzb.utils.CheckBlank.checkNotBlank;
@Service
public class PubOrgServiceImpl implements PubOrgService{
@Resource
private PubOrgMapper pubOrgMapper;
@Autowired
private RedisUtils redisUtils;
public ResponseResult showPubOrgList(Map<String, Object> orgId) {
// 构建 Redis 缓存键
String redisKey = "showPubOrgList";
Long orgInfo = Long.valueOf(orgId.get("orgId").toString());//获取输入的组织机构id信息
// Redis 中获取数据
List<PubOrg> cachedData = redisUtils.findCachedData(redisKey);
List<PubOrg> menuList = new ArrayList<>();
if (cachedData != null) {
menuList = cachedData;
} else {
// 从数据库获取数据并将结果存入 Redis 缓存
menuList = pubOrgMapper.selectAllOrg();
redisUtils.set(redisKey, menuList);
}
List<Map<String, Object>> topList = new ArrayList<>();
List<Map<String, Object>> resultList = new ArrayList<>();
Map<Long, List<Map<String, Object>>> childrenMap = new HashMap<>();
// 构建子菜单映射表
for (PubOrg menu : menuList) {
Map<String, Object> map = new HashMap<>();
map.put("id", menu.getOrgId());
map.put("parentId", menu.getOrgParentId());
map.put("findCode", menu.getFindCode());
map.put("orgName", menu.getDName());
map.put("statusFlag",menu.getStatusFlag());
if (!childrenMap.containsKey(menu.getOrgParentId())) {
childrenMap.put(menu.getOrgParentId(), new ArrayList<>());
}
childrenMap.get(menu.getOrgParentId()).add(map);
//构建最顶级的菜单
if (menu.getOrgId().equals(orgInfo)){
Map<String, Object> topMap = new HashMap<>();
topMap.put("id", menu.getOrgId());
topMap.put("parentId", menu.getOrgParentId());
topMap.put("findCode", menu.getFindCode());
topMap.put("orgName", menu.getDName());
topMap.put("statusFlag",menu.getStatusFlag());
topList.add(topMap);
}
}
// 获取顶级菜单
List<Map<String, Object>> topMenus = childrenMap.get(orgInfo);
// 迭代构建菜单树
if (topMenus != null) {
for (Map<String, Object> topMenu : topMenus) {
Stack<Map<String, Object>> stack = new Stack<>();
stack.push(topMenu);
// 使用栈进行深度优先遍历
while (!stack.isEmpty()) {
Map<String, Object> currentMenu = stack.pop();
Long currentMenuId = (Long) currentMenu.get("id");
if (childrenMap.containsKey(currentMenuId)) {
List<Map<String, Object>> children = childrenMap.get(currentMenuId);
currentMenu.put("children", children);
for (int i = children.size() - 1; i >= 0; i--) {
stack.push(children.get(i));
}
}
}
resultList.add(topMenu);
}
}
if (orgInfo == -1) {
modifyList(resultList);
// 如果输入的是浙江省公安厅,就将下级的组织机构进行排序
for (Map<String, Object> orgMsg : resultList) {
List<Map<String, Object>> children = (List<Map<String, Object>>) orgMsg.get("children");
// 根据findCode从小到大排序
children.sort(Comparator.comparing(m -> m.get("findCode").toString()));
}
return new ResponseResult(HttpStatus.SUCCESS, "操作成功", resultList);
}
//resultList的内容放在顶级菜单的resultList
for (Map<String,Object> oneMap:topList){
oneMap.put("children",resultList);
}
// 遍历并添加父类的相关信息到children的第一个位置
<<<<<<< HEAD
//traverseList(topList);
=======
modifyList(topList);
if (orgInfo.equals(1369509498032808905L)) {
// 如果输入的是浙江省公安厅,就将下级的组织机构进行排序
for (Map<String, Object> orgMsg : topList) {
List<Map<String, Object>> children = (List<Map<String, Object>>) orgMsg.get("children");
// 根据findCode从小到大排序
children.sort(Comparator.comparing(m -> m.get("findCode").toString()));
}
return new ResponseResult(HttpStatus.SUCCESS, "操作成功", topList);
}
>>>>>>> develop
// 返回结果
return new ResponseResult(HttpStatus.SUCCESS, "操作成功", topList);
}
//将父类信息放在children的第一个位置
private static void modifyList(List<Map<String, Object>> list) {
for (Map<String, Object> item : list) {
// 获取当前节点的ID
Map<String,Object> setMsg = new HashMap<>();
setMsg.put("id", item.get("id").toString() + "-0"); //在最后面加个 -0 来表示列表的唯一id
setMsg.put("parentId", item.get("parentId").toString());
setMsg.put("findCode", item.get("findCode").toString());
setMsg.put("orgName", item.get("orgName").toString());
setMsg.put("statusFlag",item.get("statusFlag"));
// 将当前节点的ID添加到子节点的第一个位置
@SuppressWarnings("unchecked")
List<Map<String, Object>> children = (List<Map<String, Object>>) item.get("children");
if (children != null && children.size() > 0) {
//将父类的相关信息放在children的第一个位置
children.set(0,setMsg);
// 递归处理子节点
modifyList(children);
}
}
}
//删除前缀
public static Map<String,Object> removeFront(Map<String,Object> map, String name1,List<String> name2,List<String> name3) {
String orgName = map.get("orgName").toString();
orgName = removeStringAndBefore(orgName,name1);
for (String name:name2){
orgName = removePrefix(orgName,name);
for (String staticName:name3){
orgName = removePrefix(orgName,staticName);
}
}
map.put("orgName",orgName);
return map;
}
//找到字符串出现的位置,删掉字符串及前缀
public static String removeStringAndBefore(String name, String deleteMsg) {
int index = name.indexOf(deleteMsg);
if (index != -1) {
return name.substring(index + deleteMsg.length());
}
return name;
}
//例:传入abc,a ==>bc 删掉开头的字符串,不是就不删除
public static String removePrefix(String name, String deleteName) {
if (name.startsWith(deleteName)) {
return name.substring(deleteName.length());
} else {
return name;
}
}
/**
* 组织机构名称不进行删减的代码
* */
@Override
public ResponseResult showPubOrgListOld(Map<String, Object> orgId) {
//构建 Redis 缓存键
String redisKey = "showPubOrgList";
// Redis 中获取数据
List<PubOrg> cachedData = redisUtils.findCachedData(redisKey);
List<PubOrg> menuList = new ArrayList<>();
if (cachedData!=null){
menuList = cachedData;
}else {
menuList = pubOrgMapper.selectAllOrg();
redisUtils.set(redisKey, menuList);
}
List<Map<String, Object>> resultList = new ArrayList<>();
Map<Long, List<Map<String, Object>>> childrenMap = new HashMap<>();
// 构建子菜单映射表
for (PubOrg menu : menuList) {
Map<String, Object> map = new HashMap<>();
map.put("id", menu.getOrgId());
map.put("parentId", menu.getOrgParentId());
map.put("orgName", menu.getOrgName());
if (!childrenMap.containsKey(menu.getOrgParentId())) {
childrenMap.put(menu.getOrgParentId(), new ArrayList<>());
}
childrenMap.get(menu.getOrgParentId()).add(map);
}
Long orgInfo=Long.valueOf(orgId.get("orgId").toString());
// 获取顶级菜单
List<Map<String, Object>> topMenus = childrenMap.get(orgInfo);
// 迭代构建菜单树
if (topMenus != null) {
for (Map<String, Object> topMenu : topMenus) {
Stack<Map<String, Object>> stack = new Stack<>();
stack.push(topMenu);
while (!stack.isEmpty()) {
Map<String, Object> currentMenu = stack.pop();
Long currentMenuId = (Long) currentMenu.get("id");
if (childrenMap.containsKey(currentMenuId)) {
List<Map<String, Object>> children = childrenMap.get(currentMenuId);
currentMenu.put("children", children);
for (int i = children.size() - 1; i >= 0; i--) {
stack.push(children.get(i));
}
}
}
resultList.add(topMenu);
}
}
//redisUtils.set(redisKey, resultList);
return new ResponseResult(HttpStatus.SUCCESS,"操作成功",resultList);
}
@Override
public List<String> getLowerOrg(String orgId) {
//构建 Redis 缓存键
String redisKey = "getLowerOrg";
// Redis 中获取数据
List<PubOrg> cachedData = redisUtils.findCachedData(redisKey);
List<PubOrg> menuList = new ArrayList<>();
if (cachedData!=null){
menuList = cachedData;
}else {
menuList = pubOrgMapper.selectAllOrg();
redisUtils.set(redisKey, menuList);
}
List<String> resultList = new ArrayList<>(); // 存储最终的菜单树结果
Map<Long, List<String>> childrenMap = new HashMap<>(); // 存储每个菜单项的子菜单映射
resultList.add(orgId); //将自己加入到返回的List
// 构建子菜单映射表
for (PubOrg menu : menuList) {
String org = menu.getOrgId().toString();
if (!childrenMap.containsKey(menu.getOrgParentId())) { // 如果父菜单还不存在于映射表中
childrenMap.put(menu.getOrgParentId(), new ArrayList<>()); // 创建一个新的子菜单列表
}
childrenMap.get(menu.getOrgParentId()).add(org); // 将当前菜单项放入对应的子菜单列表中
}
Long orgInfo = Long.valueOf(orgId);//获取输入的组织机构id信息
//Long orgInfo = new BigInteger(orgId); // 获取顶级菜单的标识符
// 获取顶级菜单
List<String> topMenus = childrenMap.get(orgInfo);
// 迭代构建菜单树
if (topMenus != null) {
Queue<String> queue = new LinkedList<>(); // 使用队列结构辅助构建菜单树
queue.addAll(topMenus); // 将当前顶级菜单项放入队列中
while (!queue.isEmpty()) {
String currentMenu = queue.poll(); // 取出队首的当前菜单项
//Long currentMenuId = currentMenu; // 获取当前菜单项的标识符
if (childrenMap.containsKey(currentMenu)) { // 如果当前菜单项有子菜单
List<String> children = childrenMap.get(currentMenu); // 获取子菜单列表
//currentMenu.put("children", children); // 将子菜单列表放入当前菜单项中的"children"字段
queue.addAll(children); // 将子菜单项放入队列中
}
resultList.add(currentMenu); // 将已经处理完的当前菜单项添加到结果列表中
}
}
//redisUtils.set(redisKey, resultList);
return resultList;
}
@Override
public ResponseResult setOrgParentIds() {
//清空parent_ids字段
pubOrgMapper.wipeParentIdsData();
//更新parent_ids字段
pubOrgMapper.setOrgParentIds();
return new ResponseResult(HttpStatus.SUCCESS, ReturnMsg.PASS);
}
@Override
public ResponseResult setShortName(Map<String, Object> orgId) {
List<PubOrg> menuList = pubOrgMapper.selectAllOrg();
List<Map<String, Object>> resultList = new ArrayList<>();
for (PubOrg menu : menuList) {
if (menu.getOrgParentId().toString().equals((orgId.get("orgId")))) {
Map<String, Object> map = new HashMap<>();
map.put("id", menu.getOrgId());
map.put("parentId", menu.getOrgParentId());
//去掉前缀
String name1 = menu.getOrgName(); //name1 ,获得“浙江省公安厅”
//List<String> name2 = null;
List<String> name2 = new ArrayList<>();
//name3为固定字段
List<String> name3 = new ArrayList<>();
name3.add("公安局");
name3.add("公安");
name3.add("分局");
if (menu.getOrgName().length()>3 && name2.size() <2 && (menu.getOrgName().charAt(2)=='省' ||menu.getOrgName().charAt(2)=='市')){
String nameHistory = menu.getOrgName().substring(0,3); //name2 ,获得“浙江省”
name2.add(nameHistory);
name2.add(" ");
name2.add(" ");
}
if (menu.getOrgName().length()>3 && (menu.getOrgName().charAt(2)=='区')){
name2.remove(2);
String nameHistory = menu.getOrgName().substring(0,3);
name2.add(2,nameHistory);
}
map.put("orgName", name1);
List<Map<String, Object>> children = getChildMenus(menu.getOrgId(),menuList,name1,name2,name3);//name为要删掉的前缀
if (!children.isEmpty()) {
map.put("children", children);
for (Map<String,Object> msg:children){
Long id = (Long) msg.get("id");
String orgName = msg.get("orgName").toString();
pubOrgMapper.setMsg(id,orgName);
}
}
//map.put("children", getChildMenus(menu.getOrgId(),menuList,name1,name2,name3));
resultList.add(map);
}
}
return new ResponseResult(HttpStatus.SUCCESS,"操作成功",resultList);
}
private List<Map<String, Object>> getChildMenus(Long parentId, List<PubOrg> menuList,String deleteName1,List<String> deleteName2,List<String> deleteName3) {
List<Map<String, Object>> childList = new ArrayList<>();
for (PubOrg menu : menuList) {
//if (menu.getParentId() != null && menu.getParentId().equals(parentId)) {
if (menu.getOrgParentId().toString().equals(parentId.toString())) {
Map<String, Object> map = new HashMap<>();
map.put("id", menu.getOrgId());
map.put("parentId", menu.getOrgParentId());
//去掉前缀
String name1 = menu.getOrgName();
List<String> name2 = new ArrayList<>();
name2 = deleteName2;
String result = removePrefix(name1, deleteName1);
//遍历name2删掉前缀
for (String nameMsg:name2){
result = removePrefix(result, nameMsg);
for (String name3:deleteName3){
result = removePrefix(result, name3);
}
}
map.put("orgName", result);
if (result.length()>3 && (result.charAt(2)=='省' ||result.charAt(2)=='市')){
name2.remove(1);
String nameHistory = result.substring(0,3); //获得“绍兴市”
name2.add(1,nameHistory);
}
if (result.length()>3 && (result.charAt(2)=='区' ||result.charAt(2)=='县')){
name2.remove(2);
String nameHistory = result.substring(0,3);
name2.add(2,nameHistory);
}
List<Map<String, Object>> children = getChildMenus(menu.getOrgId(), menuList,name1,name2,deleteName3);
if (!children.isEmpty()) {
map.put("children", children);
// for (Map<String,Object> msg:children){
// Long id = (Long) msg.get("id");
// String orgName = msg.get("orgName").toString();
// pubOrgMapper.setMsg(id,orgName);
// }
}
childList.add(map);
}
}
return childList;
}
@Override
public ResponseResult getOrgDetail(Map<String, Object> msg) {
try {
checkNotBlank(msg.get("orgId"), "orgId不能为空");
} catch (IllegalArgumentException e) {
return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,e.getMessage());
}
String orgId = msg.get("orgId").toString();
Map<String,Object> resultList = pubOrgMapper.getOrgDetail(orgId);
return new ResponseResult(HttpStatus.SUCCESS, "操作成功", resultList);
}
@Override
public ResponseResult changeOrgState(Map<String, Object> msg) {
try {
checkNotBlank(msg.get("statusFlag"), "statusFlag不能为空");
checkNotBlank(msg.get("orgIdList"), "orgIdList不能为空");
} catch (IllegalArgumentException e) {
return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,e.getMessage());
}
List<String> orgIdList = (List<String>) msg.get("orgIdList");
Integer statusFlag = (Integer) msg.get("statusFlag");
pubOrgMapper.changeOrgState(statusFlag,orgIdList);
return new ResponseResult(HttpStatus.SUCCESS,ReturnMsg.PASS);
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论