Commit e36c55b2 LN

增加条码设置功能。查找出库增加条码解析。

1 个父辈 53152fd7
......@@ -191,9 +191,9 @@ public class DataInitManager {
Menu menuStorage = new Menu(new ArrayList<Menu>(), 1, "storage:list", "料仓管理", 1, "bunker", "storage/storage/index", "", 0, "database");
Menu menuStoragePos = new Menu(new ArrayList<Menu>(), 1, "storagePos:list", "库位管理", 1, "storagePos", "storagePos/storagePos/index", "", 0, "tree-table");
Menu menuMenu = new Menu(new ArrayList<Menu>(), 1, "menu:list", "菜单管理", 1, "menu", "system/menu/index", "", 0, "menu");
Menu sysSetting = new Menu(new ArrayList<Menu>(), 1, "setting", "系统设置", 1, "setting", "system/setting/index", "", 0, "database");
Menu sysSetting = new Menu(new ArrayList<Menu>(), 1, "setting", "条码设置", 1, "barcodeSetting", "system/barcodeSetting/index", "", 0, "database");
// menuMenu.setHidden(true);
sysSetting.setHidden(true);
// sysSetting.setHidden(true);
menus.addAll(createMenus(poutSet, menuStorage, menuStoragePos, menuMenu, sysSetting));
......
......@@ -83,4 +83,6 @@ public class Constants {
* @deprecated No longer used to set themes.
*/
public static final String CSS_THEME = "csstheme";
public static final String CACHE_CodeRule="codeRule";
}
......@@ -8,9 +8,7 @@ import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.core.barcode.rest.bean.dto.BarcodeDto;
import com.neotel.smfcore.core.barcode.rest.bean.dto.BarcodeSettingDto;
import com.neotel.smfcore.core.barcode.rest.bean.mapstruct.BarcodeMapper;
import com.neotel.smfcore.core.barcode.rest.bean.mapstruct.BarcodeSettingMapper;
import com.neotel.smfcore.core.barcode.rest.bean.query.BarcodeQueryCriteria;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
......@@ -36,7 +34,6 @@ import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Slf4j
......@@ -50,8 +47,6 @@ public class BarcodeController {
@Autowired
private final BarcodeMapper barcodeMapper;
@Autowired
private final BarcodeSettingMapper barcodeSettingMapper;
@Autowired
private final DataCache dataCache;
@Autowired
......@@ -110,31 +105,25 @@ public class BarcodeController {
}
@ApiOperation("获取条码设置信息")
@GetMapping("/setting")
@ApiOperation("获取条码规则")
@GetMapping("/rule")
@PreAuthorize("@el.check('barcode:setting')")
public BarcodeSettingDto setting(){
BarcodeSettingDto settingDto=barcodeSettingMapper.toDto(dataCache.getSettings() );
return settingDto;
public List<String> getRules(){
return dataCache.getSettings().getCodeRuleList();
}
@ApiOperation("修改条码设置信息")
@PutMapping("/setting")
@ApiOperation("修改条码规则")
@PutMapping("/rule")
@PreAuthorize("@el.check('barcode:setting')")
public ResponseEntity<Object> updateSetting(@Validated @RequestBody BarcodeSettingDto settingDto) {
if(settingDto.getCodeRuleList().isEmpty()){
public ResponseEntity<Object> updateRules(@Validated @RequestBody List<String> codeRules) {
if(codeRules.isEmpty()){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"codeRuleList"} );
}
if(settingDto.getPageHeight()==null){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"pageHeight"} );
}
if(settingDto.getPageWidth()==null){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"pageWidth"} );
if(codeRules.size()>10){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"codeRuleList"} );
}
Settings settings=dataCache.getSettings();
settings.setCodeRuleList(settingDto.getCodeRuleList());
settings.setPageHeight(settingDto.getPageHeight());
settings.setPageWidth(settingDto.getPageWidth());
settings.setCodeRuleList(codeRules);
dataCache.updateSettings(settings);
//修改设置
return new ResponseEntity<>(HttpStatus.OK);
......
package com.neotel.smfcore.core.barcode.rest.bean.dto;
import com.google.common.collect.Lists;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class BarcodeSettingDto {
@ApiModelProperty("多条条码规则")
private List<String> codeRuleList = Lists.newArrayList();
@ApiModelProperty("打印条码的纸张宽度(条码为方形,大小是长宽中最小的)")
private Integer pageWidth = 500;
@ApiModelProperty("打印条码的纸张高度")
private Integer pageHeight = 160;
}
package com.neotel.smfcore.core.barcode.rest.bean.dto;
import com.google.common.collect.Lists;
import com.neotel.smfcore.core.barcode.enums.BARCODE_STATUS;
import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE;
import com.neotel.smfcore.core.barcode.enums.SOLDER_STATUS;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.data.annotation.Transient;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Getter
@Setter
@ToString
public class CodeDto implements Serializable {
@ApiModelProperty("条码编号")
private String barcode;
@ApiModelProperty("料件编号")
private String partNumber;
@ApiModelProperty("宽度")
private int plateSize=0;
@ApiModelProperty("高度")
private int height=0;
/**
* 原始条码
*/
@ApiModelProperty("原始条码")
private String fullCode;
}
package com.neotel.smfcore.core.barcode.rest.bean.mapstruct;
import com.neotel.smfcore.common.base.BaseMapper;
import com.neotel.smfcore.core.barcode.rest.bean.dto.BarcodeSettingDto;
import com.neotel.smfcore.core.system.service.po.Settings;
import com.neotel.smfcore.core.barcode.rest.bean.dto.CodeDto;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
@Mapper(componentModel = "spring" ,unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface BarcodeSettingMapper extends BaseMapper<BarcodeSettingDto, Settings> {
public interface CodeMapper extends BaseMapper<CodeDto,Barcode> {
}
......@@ -43,7 +43,7 @@ public class CodeResolve {
}
/**
* 解析条码为单个 Barcode
* 解析条码为单个 Barcode,自动保存到数据库
*/
public CodeBean resolveSingleCode(String barcodeItemStr){
......@@ -220,6 +220,26 @@ public class CodeResolve {
return codeBeanFromRule;
}
/**
* 解析条码为单个 Barcode
*/
public Barcode resolveCode(String barcodeItemStr) {
CodeBean codeBeanFromRule = null;
//每个规则尝试解析一次
for (BarcodeRule codeRule : barcodeRuleList) {
codeBeanFromRule = codeRule.toCodeBean(barcodeItemStr);
if (codeBeanFromRule.isValid()) {
if (codeBeanFromRule.getBarcode() != null) {
return codeBeanFromRule.getBarcode();
}
}
}
return null;
}
public Collection<CodeBean> resolveCodeStr(String codeStr){
List<CodeBean> codeBeans = Lists.newArrayList();
//Map<String, CodeBean> codeBeanMap = Maps.newHashMap();
......
......@@ -3,6 +3,7 @@ package com.neotel.smfcore.core.device.util;
import com.google.common.base.Strings;
import com.google.common.collect.Maps;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.StorageConstants;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.barcode.utils.CodeResolve;
......@@ -99,6 +100,10 @@ public class DataCache {
public void updateCache(String cacheKey, Object value){
cacheItemDao.updateCacheItem(cacheKey,value);
cacheMap.put(cacheKey,value);
if(cacheKey.equals(Constants.CACHE_CodeRule)){
List<String> ruleList=(List<String>)value;
codeResolve.updateBarcodeRuleList(ruleList);
}
}
/**
......
......@@ -8,6 +8,10 @@ import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.common.utils.StorageConstants;
import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE;
import com.neotel.smfcore.core.barcode.rest.bean.dto.CodeDto;
import com.neotel.smfcore.core.barcode.rest.bean.mapstruct.CodeMapper;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.barcode.utils.CodeResolve;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.storage.rest.dto.CheckOutDto;
import com.neotel.smfcore.core.storage.rest.dto.StoragePosDto;
......@@ -27,6 +31,7 @@ import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.asm.Advice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Criteria;
......@@ -59,6 +64,12 @@ public class StoragePosController {
@Autowired
private TaskService taskService;
@Autowired
private CodeResolve codeResolve;
@Autowired
private CodeMapper codeMapper;
@ApiOperation("查询库位")
......@@ -235,4 +246,21 @@ public class StoragePosController {
}
return ResultBean.newOkResult("");
}
@ApiOperation("解析出库条码")
@PutMapping("/resolveCode")
public CodeDto resolveCode(@RequestParam("blurry") String blurry){
String barcodeStr=blurry;
Barcode barcode=codeResolve.resolveCode(barcodeStr);
if(barcode==null){
return null;
}else{
CodeDto dto=codeMapper.toDto(barcode);
log.info("resolveCode ["+barcodeStr+"]=["+dto.toString()+"]");
return dto;
}
}
}
......@@ -11,7 +11,7 @@ import java.util.Date;
@Data
public class StoragePosFindCriteria {
@QueryCondition(blurry = "barcode,posName")
@QueryCondition(blurry = "barcode.partNumber,barcode,posName")
private String blurry;
@QueryCondition(type = QueryCondition.Type.BETWEEN, propName = "updateDate")
......
......@@ -8,7 +8,7 @@ import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class StoragePosQueryCriteria {
@QueryCondition(blurry = "barcode.barcode,posName")
@QueryCondition(blurry = "barcode.partNumber,barcode.barcode,posName")
private String blurry;
@QueryCondition(type = QueryCondition.Type.BETWEEN, propName = "updateDate")
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!