feat:添加库区二维码

main
HuangHuiKang 1 month ago
parent 1340c6ff04
commit 9833e82771

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

@ -1,6 +1,8 @@
package cn.iocoder.yudao.module.erp.controller.admin.warehousearea; package cn.iocoder.yudao.module.erp.controller.admin.warehousearea;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 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.controller.admin.stock.vo.warehouse.ErpWarehouseRespVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -13,6 +15,7 @@ import io.swagger.v3.oas.annotations.Operation;
import java.util.*; import java.util.*;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException;
import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult; 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 cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; 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.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.controller.admin.warehousearea.vo.*;
import cn.iocoder.yudao.module.erp.dal.dataobject.warehousearea.WarehouseAreaDO; import cn.iocoder.yudao.module.erp.dal.dataobject.warehousearea.WarehouseAreaDO;
@ -43,10 +47,13 @@ public class WarehouseAreaController {
@Resource @Resource
private WarehouseAreaService warehouseAreaService; private WarehouseAreaService warehouseAreaService;
@Resource
private QrcodeRecordService qrcodeService;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建ERP 库区信息") @Operation(summary = "创建ERP 库区信息")
@PreAuthorize("@ss.hasPermission('erp:warehouse-area:create')") @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)); return success(warehouseAreaService.createWarehouseArea(createReqVO));
} }
@ -73,7 +80,9 @@ public class WarehouseAreaController {
@PreAuthorize("@ss.hasPermission('erp:warehouse-area:query')") @PreAuthorize("@ss.hasPermission('erp:warehouse-area:query')")
public CommonResult<WarehouseAreaRespVO> getWarehouseArea(@RequestParam("id") Long id) { public CommonResult<WarehouseAreaRespVO> getWarehouseArea(@RequestParam("id") Long id) {
WarehouseAreaDO warehouseArea = warehouseAreaService.getWarehouseArea(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") @GetMapping("/page")
@ -81,7 +90,9 @@ public class WarehouseAreaController {
@PreAuthorize("@ss.hasPermission('erp:warehouse-area:query')") @PreAuthorize("@ss.hasPermission('erp:warehouse-area:query')")
public CommonResult<PageResult<WarehouseAreaRespVO>> getWarehouseAreaPage(@Valid WarehouseAreaPageReqVO pageReqVO) { public CommonResult<PageResult<WarehouseAreaRespVO>> getWarehouseAreaPage(@Valid WarehouseAreaPageReqVO pageReqVO) {
PageResult<WarehouseAreaDO> pageResult = warehouseAreaService.getWarehouseAreaPage(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 = "只包含被开启的仓库库区,主要用于前端的下拉选项") @Operation(summary = "获得库区精简列表", description = "只包含被开启的仓库库区,主要用于前端的下拉选项")
public CommonResult<List<WarehouseAreaRespVO>> getWarehouseSimpleList(@RequestParam(value = "warehouseId", required = false) Long warehouseId) { public CommonResult<List<WarehouseAreaRespVO>> getWarehouseSimpleList(@RequestParam(value = "warehouseId", required = false) Long warehouseId) {
List<WarehouseAreaDO> list = warehouseAreaService.getWarehouseListByStatusAndWarehouseId(CommonStatusEnum.ENABLE.getStatus(), 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()) .setId(area.getId())
.setWarehouseId(area.getWarehouseId()) .setWarehouseId(area.getWarehouseId())
.setAreaCode(area.getAreaCode()) .setAreaCode(area.getAreaCode())
.setAreaName(area.getAreaName()) .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)); 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("库区编码") @ExcelProperty("库区编码")
private String areaCode; private String areaCode;
@Schema(description = "二维码 URL")
private String qrcodeUrl;
@Schema(description = "库区名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") @Schema(description = "库区名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@ExcelProperty("库区名称") @ExcelProperty("库区名称")
private String areaName; private String areaName;
@ -45,4 +48,4 @@ public class WarehouseAreaRespVO {
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
} }

@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.erp.service.warehousearea; package cn.iocoder.yudao.module.erp.service.warehousearea;
import java.util.*; import java.util.*;
import java.io.UnsupportedEncodingException;
import cn.iocoder.yudao.module.erp.controller.admin.warehousearea.vo.*; import cn.iocoder.yudao.module.erp.controller.admin.warehousearea.vo.*;
import cn.iocoder.yudao.module.erp.dal.dataobject.warehousearea.WarehouseAreaDO; import cn.iocoder.yudao.module.erp.dal.dataobject.warehousearea.WarehouseAreaDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
@ -21,7 +22,7 @@ public interface WarehouseAreaService {
* @param createReqVO * @param createReqVO
* @return * @return
*/ */
Long createWarehouseArea(@Valid WarehouseAreaSaveReqVO createReqVO); Long createWarehouseArea(@Valid WarehouseAreaSaveReqVO createReqVO) throws UnsupportedEncodingException;
/** /**
* ERP * ERP
@ -66,4 +67,6 @@ public interface WarehouseAreaService {
List<WarehouseAreaDO> getWarehouseListByStatus(Integer status); List<WarehouseAreaDO> getWarehouseListByStatus(Integer status);
List<WarehouseAreaDO> getWarehouseListByStatusAndWarehouseId(Integer status, Long warehouseId); 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.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 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.autocode.util.AutoCodeUtil;
import cn.iocoder.yudao.module.erp.controller.admin.warehousearea.vo.WarehouseAreaPageReqVO; 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.controller.admin.warehousearea.vo.WarehouseAreaSaveReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.warehousearea.WarehouseAreaDO; 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.warehousearea.WarehouseAreaMapper;
import cn.iocoder.yudao.module.erp.dal.mysql.warehouselocation.WarehouseLocationMapper; import cn.iocoder.yudao.module.erp.dal.mysql.warehouselocation.WarehouseLocationMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.util.Collection; import java.util.Collection;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -24,6 +30,7 @@ import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.WAREHOUSE_ARE
@Service @Service
@Validated @Validated
@Slf4j
public class WarehouseAreaServiceImpl implements WarehouseAreaService { public class WarehouseAreaServiceImpl implements WarehouseAreaService {
@Resource @Resource
@ -35,8 +42,12 @@ public class WarehouseAreaServiceImpl implements WarehouseAreaService {
@Resource @Resource
private AutoCodeUtil autoCodeUtil; private AutoCodeUtil autoCodeUtil;
@Resource
private QrcodeRecordService qrcodeService;
@Override @Override
public Long createWarehouseArea(WarehouseAreaSaveReqVO createReqVO) { @Transactional(rollbackFor = Exception.class)
public Long createWarehouseArea(WarehouseAreaSaveReqVO createReqVO) throws UnsupportedEncodingException {
WarehouseAreaDO warehouseArea = BeanUtils.toBean(createReqVO, WarehouseAreaDO.class); WarehouseAreaDO warehouseArea = BeanUtils.toBean(createReqVO, WarehouseAreaDO.class);
if (StringUtils.isEmpty(warehouseArea.getAreaCode())) { if (StringUtils.isEmpty(warehouseArea.getAreaCode())) {
warehouseArea.setAreaCode(autoCodeUtil.genSerialCode("RESERVOIR_AREA_GENERATE", null)); warehouseArea.setAreaCode(autoCodeUtil.genSerialCode("RESERVOIR_AREA_GENERATE", null));
@ -44,6 +55,17 @@ public class WarehouseAreaServiceImpl implements WarehouseAreaService {
throw exception(WAREHOUSE_AREA_CODE_EXISTS); throw exception(WAREHOUSE_AREA_CODE_EXISTS);
} }
warehouseAreaMapper.insert(warehouseArea); 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(); return warehouseArea.getId();
} }
@ -106,4 +128,25 @@ public class WarehouseAreaServiceImpl implements WarehouseAreaService {
return result; 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