Commit 721ef9cc LN

XLC功能代码

1 个父辈 3c1afeb1
package com.neotel.smfcore.core.device.handler.impl;
import com.google.common.base.Strings;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.common.utils.StorageConstants;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.api.IOpAuthApi;
import com.neotel.smfcore.core.device.bean.BoxStatusBean;
import com.neotel.smfcore.core.device.bean.NLShelfOperateBean;
import com.neotel.smfcore.core.device.bean.StatusBean;
import com.neotel.smfcore.core.device.enums.BOX_STATUS;
import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.rest.dto.XLCPosBarcodeDto;
import com.neotel.smfcore.core.device.rest.dto.XLCPosDetailDto;
import com.neotel.smfcore.core.storage.enums.DeviceType;
import com.neotel.smfcore.core.storage.rest.dto.StoragePosDto;
import com.neotel.smfcore.core.storage.rest.mapstruct.StoragePosMapper;
import com.neotel.smfcore.core.storage.rest.query.StoragePosQueryCriteria;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.service.po.DataLog;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@Service
//北京方仓
@RestController
@Api(tags = "XLC方仓")
@Slf4j
public class XLCBoxHandler extends BaseDeviceHandler {
public XLCBoxHandler(List<IOpAuthApi> apiList) {
super(apiList);
}
@Autowired
private IStoragePosManager storagePosManager;
@Autowired
private StoragePosMapper storagePosMapper;
/**
* 当前出入库操作的库位(key为cid, value为当前执行的任务)
*/
......@@ -39,6 +70,69 @@ public class XLCBoxHandler extends BaseDeviceHandler {
return operateTaskMap.get(cid);
}
@ApiOperation("XLC方仓容量详情")
@GetMapping("/api/boxkanban/xlcDetails")
@PreAuthorize("@el.check('boxkanban:info')")
public List<XLCPosDetailDto> xlcDetails(StoragePosQueryCriteria criteria) {
criteria.setUsed(true);
// String storageId = mapValues.get("storageId");
// Query query = new Query(Criteria.where("storageId").is(storageId).and("used").is(true));
Query query = QueryHelp.getQuery(criteria);
List<StoragePos> enabledPosList = storagePosManager.findByQuery(query);
// List<StoragePosDto> dtos = new ArrayList<>();
// for (StoragePos storagePos : enabledPosList) {
// if (!storagePos.isExpandPos()) {
// dtos.add(storagePosMapper.toDto(storagePos));
// }
// }
List<XLCPosDetailDto> dtos = new ArrayList<>();
for (StoragePos pos : enabledPosList) {
boolean isEx=pos.isExpandPos();
if ((!pos.isExpandPos()) && (pos.getBarcode() != null)) {
List< XLCPosBarcodeDto> list = new ArrayList<>();
if (pos.getBarcode().getSubCodeMap() != null) {
Set<String> keys = pos.getBarcode().getSubCodeMap().keySet();
for (String key :
keys) {
Barcode barcode = pos.getBarcode().getSubCodeMap().get(key);
list.add( toPosBarcodeDto(barcode));
}
}
if(list.size()<=0) {
Random r = new Random();
int num = r.nextInt() % 10;
for (int i = 1; i <= num; i++) {
XLCPosBarcodeDto dto1 = toPosBarcodeDto(pos.getBarcode());
dto1.setBarcode(i+ dto1.getBarcode());
dto1.setAmount(i * 1111);
list.add(dto1);
}
}
XLCPosBarcodeDto barcodeDto = toPosBarcodeDto(pos.getBarcode());
barcodeDto.setSubCodeList(list);
XLCPosDetailDto dto = new XLCPosDetailDto(pos.getId(), pos.getStorageId(), pos.getPosName(), barcodeDto);
dtos.add(dto);
}
}
return dtos;
}
private XLCPosBarcodeDto toPosBarcodeDto(Barcode barcode){
XLCPosBarcodeDto dto=new XLCPosBarcodeDto();
dto.setAmount(barcode.getAmount());
dto.setBarcode(barcode.getBarcode());
dto.setPartNumber(barcode.getPartNumber());
dto.setId(barcode.getId());
dto.setDescribe(barcode.getDescribe());
return dto;
}
/**
* 更新或清理(task为null)当前正在执行的任务
*/
......
package com.neotel.smfcore.core.device.rest.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
@Getter
@Setter
public class XLCPosBarcodeDto implements Serializable {
@ApiModelProperty(value = "ID")
private String id;
@ApiModelProperty("条码编号")
private String barcode;
@ApiModelProperty("料件编号")
private String partNumber;
@ApiModelProperty("数量")
private int amount;
@ApiModelProperty("描述")
private String describe;
/**
* 料箱中的物料信息
*/
@ApiModelProperty("料箱中的物料信息")
private List<XLCPosBarcodeDto> subCodeList;
}
package com.neotel.smfcore.core.device.rest.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.stereotype.Service;
import java.io.Serializable;
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public class XLCPosDetailDto implements Serializable {
@ApiModelProperty("库位ID")
private String id;
@ApiModelProperty("料仓ID")
private String storageId;
@ApiModelProperty("库位号")
private String posName;
@ApiModelProperty("条码")
private XLCPosBarcodeDto barcode;
}
......@@ -32,4 +32,8 @@ public class StoragePosQueryCriteria {
@ApiModelProperty("是否启用")
@QueryCondition
private Boolean enabled;
@ApiModelProperty("是否使用")
@QueryCondition
private Boolean used;
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!