Merge branch 'feature/bug-788' into develop

This commit is contained in:
曹鹏飞 2025-10-10 10:14:27 +08:00
commit 6226770de9
2 changed files with 33 additions and 17 deletions

View File

@ -12,6 +12,7 @@ import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.dto.BarcodePrintingAddDTO; import com.nflg.wms.common.pojo.dto.BarcodePrintingAddDTO;
import com.nflg.wms.common.pojo.dto.DeliverNormalOrderItemDTO; import com.nflg.wms.common.pojo.dto.DeliverNormalOrderItemDTO;
import com.nflg.wms.common.pojo.qo.BarcodePrintingAddQO;
import com.nflg.wms.common.pojo.qo.BarcodePrintingEditQO; import com.nflg.wms.common.pojo.qo.BarcodePrintingEditQO;
import com.nflg.wms.common.pojo.qo.BarcodePrintingIdsQO; import com.nflg.wms.common.pojo.qo.BarcodePrintingIdsQO;
import com.nflg.wms.common.pojo.qo.BarcodePrintingQO; import com.nflg.wms.common.pojo.qo.BarcodePrintingQO;
@ -28,9 +29,12 @@ import com.nflg.wms.starter.service.FileUploadService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -43,7 +47,8 @@ import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.net.URL; import java.net.URL;
import java.text.DecimalFormat; import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
@ -56,14 +61,13 @@ import java.util.*;
@RestController @RestController
@RequestMapping("/barcode") @RequestMapping("/barcode")
public class BarcodePrintingController extends BaseController { public class BarcodePrintingController extends BaseController {
@Resource @Resource
private IWmsInventoryBarcodePrintingService printingService; private IWmsInventoryBarcodePrintingService printingService;
@Resource @Resource
private FileUploadService fileUploadService; private FileUploadService fileUploadService;
private static final DecimalFormat DF = new DecimalFormat("0.00");
/** /**
* 列表 * 列表
*/ */
@ -78,8 +82,8 @@ public class BarcodePrintingController extends BaseController {
*/ */
@PostMapping("items") @PostMapping("items")
@ApiMark(moduleName = "仓储物流打印", apiName = "获取编辑记录") @ApiMark(moduleName = "仓储物流打印", apiName = "获取编辑记录")
public ApiResult<List<BarcodePrintingVO>> getItems(@Valid @RequestBody BarcodePrintingIdsQO request) { public ApiResult<List<BarcodePrintingVO>> getItems(@Valid @RequestBody @NotEmpty List<Long> ids) {
List<WmsInventoryBarcodePrinting> items = printingService.listByIds(request.getIds()); List<WmsInventoryBarcodePrinting> items = printingService.listByIds(ids);
List<BarcodePrintingVO> vos = new ArrayList<>(); List<BarcodePrintingVO> vos = new ArrayList<>();
if (CollectionUtil.isNotEmpty(items)) { if (CollectionUtil.isNotEmpty(items)) {
vos = Convert.toList(BarcodePrintingVO.class, items); vos = Convert.toList(BarcodePrintingVO.class, items);
@ -92,11 +96,8 @@ public class BarcodePrintingController extends BaseController {
*/ */
@PostMapping("delete") @PostMapping("delete")
@ApiMark(moduleName = "仓储物流打印", apiName = "批量删除记录") @ApiMark(moduleName = "仓储物流打印", apiName = "批量删除记录")
public ApiResult<Void> deleteBarcodes(@Valid @RequestBody BarcodePrintingIdsQO request) { public ApiResult<Void> deleteBarcodes(@Valid @RequestBody @NotEmpty List<Long> ids) {
if (CollectionUtil.isEmpty(request.getIds())) { printingService.removeByIds(ids);
VUtil.trueThrowBusinessError(true).throwMessage("没有需要删除的数据");
}
printingService.removeByIds(request.getIds());
return ApiResult.success(); return ApiResult.success();
} }
@ -125,6 +126,18 @@ public class BarcodePrintingController extends BaseController {
return ApiResult.success(); return ApiResult.success();
} }
/**
* 导出模板
*/
@GetMapping("export")
public void exportKit(HttpServletResponse response) throws Exception {
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("库存物料打印导入模板.xlsx", StandardCharsets.UTF_8));
new Workbook()
.addSheet(new ListSheet<>(List.of(new BarcodePrintingAddQO())))
.writeTo(response.getOutputStream());
}
/** /**
* 导入物料清单 * 导入物料清单
* @param file 文件 * @param file 文件
@ -157,7 +170,10 @@ public class BarcodePrintingController extends BaseController {
if (!errorBuild.isEmpty()) { if (!errorBuild.isEmpty()) {
item.setError(errorBuild.toString()); item.setError(errorBuild.toString());
} else { } else {
codes.add(Convert.convert(WmsInventoryBarcodePrinting.class, item)); WmsInventoryBarcodePrinting entity = Convert.convert(WmsInventoryBarcodePrinting.class, item);
entity.setCreateBy(UserUtil.getUserName());
entity.setCreateTime(LocalDateTime.now());
codes.add(entity);
} }
} }
if (data.stream().noneMatch(it -> StrUtil.isNotBlank(it.getError())) if (data.stream().noneMatch(it -> StrUtil.isNotBlank(it.getError()))
@ -180,9 +196,9 @@ public class BarcodePrintingController extends BaseController {
} }
private String generateQRContent(DeliverNormalOrderItemDTO order, String indexNo) { private String generateQRContent(DeliverNormalOrderItemDTO order, String indexNo) {
String content = StrUtil.format("{}${}${}${}${}${}${}${}" String content = StrUtil.format("{}${}${}${}${}${}${}${}${}"
, order.getPrintNo(), order.getExternalOrderNo(), order.getRowNo(), order.getMaterialNo(), order.getPrintNum() , order.getPrintNo(), order.getExternalOrderNo(), order.getRowNo(), order.getMaterialNo(), order.getPrintNum()
, order.getMaterialDesc(), order.getBatchNo(), Optional.ofNullable(indexNo).orElse("")); , order.getMaterialDesc(), "", order.getBatchNo(), Optional.ofNullable(indexNo).orElse(""));
log.debug("二维码内容:" + content); log.debug("二维码内容:" + content);
return content; return content;
} }

View File

@ -19,22 +19,22 @@
FROM FROM
wms_inventory_barcode_printing wms_inventory_barcode_printing
<where> <where>
<if test="request != null and request.materialNos != null and request.materialNos != ''"> <if test="request.materialNos != null and request.materialNos != ''">
AND material_no IN AND material_no IN
<foreach item="materialNo" index="index" collection="request.materialNos.split(',')" <foreach item="materialNo" index="index" collection="request.materialNos.split(',')"
open="(" separator="," close=")"> open="(" separator="," close=")">
#{materialNo} #{materialNo}
</foreach> </foreach>
</if> </if>
<if test="request != null and request.batchNumbers != null and request.batchNumbers != ''"> <if test="request.batchNumbers != null and request.batchNumbers != ''">
AND batch_number IN AND batch_number IN
<foreach item="batchNo" index="index" collection="request.batchNumbers.split(',')" <foreach item="batchNo" index="index" collection="request.batchNumbers.split(',')"
open="(" separator="," close=")"> open="(" separator="," close=")">
#{batchNo} #{batchNo}
</foreach> </foreach>
</if> </if>
<if test="request != null and request.serialNumber != null and request.serialNumber != ''"> <if test="request.serialNumber != null and request.serialNumber != ''">
AND serial_numbers LIKE CONCAT('%', #{serialNumber}, '%') AND serial_numbers LIKE CONCAT('%', #{request.serialNumber}, '%')
</if> </if>
<if test="request != null and request.materialDes != null and request.materialDes != ''"> <if test="request != null and request.materialDes != null and request.materialDes != ''">
AND material_des LIKE CONCAT('%', #{request.materialDes}, '%') AND material_des LIKE CONCAT('%', #{request.materialDes}, '%')