feat:添加库区二维码

main
HuangHuiKang 2 weeks ago
parent 1340c6ff04
commit 9833e82771

@ -13,7 +13,8 @@ public enum QrcodeBizTypeEnum {
KEY_PART("KEY_PART", "关键件"),
MOLD("MOLD", "模具"),
PALLET("PALLET", "托盘"),
SPARE("SPARE", "备件");
SPARE("SPARE", "备件"),
WAREHOUSE_AREA("WAREHOUSE_AREA", "库区");
private final String code;
private final String name;

@ -1,6 +1,8 @@
package cn.iocoder.yudao.module.erp.controller.admin.warehousearea;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.module.common.enums.QrcodeBizTypeEnum;
import cn.iocoder.yudao.module.common.service.qrcordrecord.QrcodeRecordService;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehouseRespVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
import org.springframework.web.bind.annotation.*;
@ -13,6 +15,7 @@ import io.swagger.v3.oas.annotations.Operation;
import java.util.*;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
@ -25,6 +28,7 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import cn.iocoder.yudao.module.erp.controller.admin.warehousearea.vo.*;
import cn.iocoder.yudao.module.erp.dal.dataobject.warehousearea.WarehouseAreaDO;
@ -43,10 +47,13 @@ public class WarehouseAreaController {
@Resource
private WarehouseAreaService warehouseAreaService;
@Resource
private QrcodeRecordService qrcodeService;
@PostMapping("/create")
@Operation(summary = "创建ERP 库区信息")
@PreAuthorize("@ss.hasPermission('erp:warehouse-area:create')")
public CommonResult<Long> createWarehouseArea(@Valid @RequestBody WarehouseAreaSaveReqVO createReqVO) {
public CommonResult<Long> createWarehouseArea(@Valid @RequestBody WarehouseAreaSaveReqVO createReqVO) throws UnsupportedEncodingException {
return success(warehouseAreaService.createWarehouseArea(createReqVO));
}
@ -73,7 +80,9 @@ public class WarehouseAreaController {
@PreAuthorize("@ss.hasPermission('erp:warehouse-area:query')")
public CommonResult<WarehouseAreaRespVO> getWarehouseArea(@RequestParam("id") Long id) {
WarehouseAreaDO warehouseArea = warehouseAreaService.getWarehouseArea(id);
return success(BeanUtils.toBean(warehouseArea, WarehouseAreaRespVO.class));
WarehouseAreaRespVO respVO = BeanUtils.toBean(warehouseArea, WarehouseAreaRespVO.class);
fillQrcodeUrl(respVO, warehouseArea);
return success(respVO);
}
@GetMapping("/page")
@ -81,7 +90,9 @@ public class WarehouseAreaController {
@PreAuthorize("@ss.hasPermission('erp:warehouse-area:query')")
public CommonResult<PageResult<WarehouseAreaRespVO>> getWarehouseAreaPage(@Valid WarehouseAreaPageReqVO pageReqVO) {
PageResult<WarehouseAreaDO> pageResult = warehouseAreaService.getWarehouseAreaPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, WarehouseAreaRespVO.class));
PageResult<WarehouseAreaRespVO> result = BeanUtils.toBean(pageResult, WarehouseAreaRespVO.class);
fillQrcodeUrl(result.getList());
return success(result);
}
@ -89,12 +100,30 @@ public class WarehouseAreaController {
@Operation(summary = "获得库区精简列表", description = "只包含被开启的仓库库区,主要用于前端的下拉选项")
public CommonResult<List<WarehouseAreaRespVO>> getWarehouseSimpleList(@RequestParam(value = "warehouseId", required = false) Long warehouseId) {
List<WarehouseAreaDO> list = warehouseAreaService.getWarehouseListByStatusAndWarehouseId(CommonStatusEnum.ENABLE.getStatus(), warehouseId);
return success(convertList(list, area -> new WarehouseAreaRespVO()
List<WarehouseAreaRespVO> result = convertList(list, area -> new WarehouseAreaRespVO()
.setId(area.getId())
.setWarehouseId(area.getWarehouseId())
.setAreaCode(area.getAreaCode())
.setAreaName(area.getAreaName())
.setStatus(area.getStatus())));
.setStatus(area.getStatus()));
fillQrcodeUrl(result);
return success(result);
}
private void fillQrcodeUrl(WarehouseAreaRespVO respVO, WarehouseAreaDO warehouseArea) {
if (respVO == null || warehouseArea == null) {
return;
}
respVO.setQrcodeUrl(qrcodeService.selectQrcodeUrlByIdAndCode(
QrcodeBizTypeEnum.WAREHOUSE_AREA.getCode(), warehouseArea.getId(), warehouseArea.getAreaCode()));
}
private void fillQrcodeUrl(List<WarehouseAreaRespVO> list) {
Map<Long, String> qrcodeUrlMap = qrcodeService.selectQrcodeUrlMapByBizTypeAndIds(
QrcodeBizTypeEnum.WAREHOUSE_AREA.getCode(), convertSet(list, WarehouseAreaRespVO::getId));
for (WarehouseAreaRespVO respVO : list) {
respVO.setQrcodeUrl(qrcodeUrlMap.get(respVO.getId()));
}
}
@ -111,4 +140,11 @@ public class WarehouseAreaController {
BeanUtils.toBean(list, WarehouseAreaRespVO.class));
}
@PostMapping("/regenerate-code")
public CommonResult<Boolean> regenerateCode(@RequestParam("id") Long id,
@RequestParam("code") String code) throws UnsupportedEncodingException {
warehouseAreaService.regenerateCode(id, code);
return success(true);
}
}

@ -25,6 +25,9 @@ public class WarehouseAreaRespVO {
@ExcelProperty("库区编码")
private String areaCode;
@Schema(description = "二维码 URL")
private String qrcodeUrl;
@Schema(description = "库区名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@ExcelProperty("库区名称")
private String areaName;
@ -45,4 +48,4 @@ public class WarehouseAreaRespVO {
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}
}

@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.erp.service.warehousearea;
import java.util.*;
import java.io.UnsupportedEncodingException;
import cn.iocoder.yudao.module.erp.controller.admin.warehousearea.vo.*;
import cn.iocoder.yudao.module.erp.dal.dataobject.warehousearea.WarehouseAreaDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
@ -21,7 +22,7 @@ public interface WarehouseAreaService {
* @param createReqVO
* @return
*/
Long createWarehouseArea(@Valid WarehouseAreaSaveReqVO createReqVO);
Long createWarehouseArea(@Valid WarehouseAreaSaveReqVO createReqVO) throws UnsupportedEncodingException;
/**
* ERP
@ -66,4 +67,6 @@ public interface WarehouseAreaService {
List<WarehouseAreaDO> getWarehouseListByStatus(Integer status);
List<WarehouseAreaDO> getWarehouseListByStatusAndWarehouseId(Integer status, Long warehouseId);
void regenerateCode(Long id, String code) throws UnsupportedEncodingException;
}

@ -2,17 +2,23 @@ package cn.iocoder.yudao.module.erp.service.warehousearea;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.common.enums.CodeTypeEnum;
import cn.iocoder.yudao.module.common.enums.QrcodeBizTypeEnum;
import cn.iocoder.yudao.module.common.service.qrcordrecord.QrcodeRecordService;
import cn.iocoder.yudao.module.erp.controller.admin.autocode.util.AutoCodeUtil;
import cn.iocoder.yudao.module.erp.controller.admin.warehousearea.vo.WarehouseAreaPageReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.warehousearea.vo.WarehouseAreaSaveReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.warehousearea.WarehouseAreaDO;
import cn.iocoder.yudao.module.erp.dal.mysql.warehousearea.WarehouseAreaMapper;
import cn.iocoder.yudao.module.erp.dal.mysql.warehouselocation.WarehouseLocationMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.util.Collection;
import java.util.ArrayList;
import java.util.List;
@ -24,6 +30,7 @@ import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.WAREHOUSE_ARE
@Service
@Validated
@Slf4j
public class WarehouseAreaServiceImpl implements WarehouseAreaService {
@Resource
@ -35,8 +42,12 @@ public class WarehouseAreaServiceImpl implements WarehouseAreaService {
@Resource
private AutoCodeUtil autoCodeUtil;
@Resource
private QrcodeRecordService qrcodeService;
@Override
public Long createWarehouseArea(WarehouseAreaSaveReqVO createReqVO) {
@Transactional(rollbackFor = Exception.class)
public Long createWarehouseArea(WarehouseAreaSaveReqVO createReqVO) throws UnsupportedEncodingException {
WarehouseAreaDO warehouseArea = BeanUtils.toBean(createReqVO, WarehouseAreaDO.class);
if (StringUtils.isEmpty(warehouseArea.getAreaCode())) {
warehouseArea.setAreaCode(autoCodeUtil.genSerialCode("RESERVOIR_AREA_GENERATE", null));
@ -44,6 +55,17 @@ public class WarehouseAreaServiceImpl implements WarehouseAreaService {
throw exception(WAREHOUSE_AREA_CODE_EXISTS);
}
warehouseAreaMapper.insert(warehouseArea);
CodeTypeEnum codeType = autoCodeUtil.queryCodeType("RESERVOIR_AREA_GENERATE");
if (codeType == null) {
log.warn("[创建库区]未配置码类型跳过生成ruleCode={}", "RESERVOIR_AREA_GENERATE");
return warehouseArea.getId();
}
qrcodeService.generateOrRefresh(
QrcodeBizTypeEnum.WAREHOUSE_AREA,
warehouseArea.getId(),
warehouseArea.getAreaCode(),
"DETAIL",
codeType);
return warehouseArea.getId();
}
@ -106,4 +128,25 @@ public class WarehouseAreaServiceImpl implements WarehouseAreaService {
return result;
}
@Override
public void regenerateCode(Long id, String code) throws UnsupportedEncodingException {
if (warehouseAreaMapper.selectById(id) == null) {
throw exception(WAREHOUSE_AREA_NOT_EXISTS);
}
if (StringUtils.isBlank(code)) {
throw exception(WAREHOUSE_AREA_CODE_EXISTS);
}
CodeTypeEnum codeType = autoCodeUtil.queryCodeType("RESERVOIR_AREA_GENERATE");
if (codeType == null) {
log.warn("[重生成库区二维码]未配置码类型跳过生成ruleCode={}", "RESERVOIR_AREA_GENERATE");
return;
}
qrcodeService.regenerateByCodeType(
QrcodeBizTypeEnum.WAREHOUSE_AREA,
id,
code,
"DETAIL",
codeType.getCode());
}
}

Loading…
Cancel
Save