1、修改供应商导出和导入功能

2、修改无码收货查询的接口,添加一个根据单据编号搜索的字段
This commit is contained in:
zhangke 2025-09-25 11:21:29 +08:00
parent a033aa2b5e
commit c1e82f45ed
8 changed files with 108 additions and 27 deletions

View File

@ -657,10 +657,19 @@ public class NormalPGIController extends BaseController {
@ApiMark(moduleName = "送货单管理", apiName = "一键收货查询")
public ApiResult<List<BarcodeLessReceivingVO>> getDeliveryByNoScan(@Valid @RequestBody BarcodeLessReceivingSearchQO request) {
List<BarcodeLessReceivingVO> list = new ArrayList<>();
List<WmsSrmOrder> orders = wmsSrmOrderService.lambdaQuery()
.in(WmsSrmOrder::getId, request.getId())
List<WmsSrmOrder> orders = null;
if (Objects.isNull(request.getId()) && request.getId() > 0) {
orders = wmsSrmOrderService.lambdaQuery()
.eq(WmsSrmOrder::getId, request.getId())
.eq(WmsSrmOrder::getIsCompleted, false)
.list();
} else {
orders = wmsSrmOrderService.lambdaQuery()
.eq(WmsSrmOrder::getNoteNum, request.getOrderNo())
.eq(WmsSrmOrder::getIsCompleted, false)
.list();
}
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(orders)).throwMessage("不存在未完成收货的物料!");
// 查找订单信息
List<WmsSrmOrderItem> items = wmsSrmOrderItemService.lambdaQuery()

View File

@ -1,5 +1,7 @@
package com.nflg.wms.admin.controller;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.nflg.wms.admin.service.UserControllerService;
import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData;
@ -7,12 +9,14 @@ import com.nflg.wms.common.pojo.qo.*;
import com.nflg.wms.common.pojo.vo.RoleSimpleVO;
import com.nflg.wms.common.pojo.vo.UserSupplierItemVO;
import com.nflg.wms.common.pojo.vo.UserSupplierVO;
import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.DictionaryItem;
import com.nflg.wms.starter.BaseController;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import org.postgresql.core.Utils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@ -155,4 +159,16 @@ public class SupplierController extends BaseController {
public void exportSelect(HttpServletResponse response, @RequestBody(required = false) List<Long> ids) throws Exception {
userControllerService.exportSupplier(response, ids);
}
/**
* 导出供应商
* @param request 搜索参数
*/
@PostMapping("exportall")
public void exportALL(HttpServletResponse response, @Valid @RequestBody UserSupplierSearchQO request) throws Exception {
request.setPageSize(Integer.MAX_VALUE);
IPage<UserSupplierVO> data = userControllerService.searchSupplier(request);
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(data.getRecords())).throwMessage("数据不存在");
userControllerService.exportSupplierByFilter(response, data.getRecords());
}
}

View File

@ -466,7 +466,7 @@ public class UserControllerService {
VUtil.trueThrowBusinessError(Objects.isNull(userSupplier) || StrUtil.isBlank(userSupplier.getSupplierCode()))
.throwMessage("供应商不存在");
if (userSupplier.getIsOpenAccount()) {
enableUser(userSupplier.getUserId(),request.getEnable()?1:2);
enableUser(userSupplier.getUserId(), request.getEnable() ? 1 : 2);
}
userSupplierService.lambdaUpdate().set(UserSupplier::getState, request.getEnable() ? 1 : 2)
.set(UserSupplier::getUpdateBy, UserUtil.getUserName())
@ -523,7 +523,7 @@ public class UserControllerService {
new Workbook()
.addSheet(new ListSheet<>(data))
.writeTo(osOut);
try(ByteArrayInputStream isIn = new ByteArrayInputStream(osOut.toByteArray())) {
try (ByteArrayInputStream isIn = new ByteArrayInputStream(osOut.toByteArray())) {
return ApiResult.error(STATE.DataNoCheckPass, "导入文件失败", fileUploadService.upload("temp/" + DateTimeUtil.format(LocalDate.now(), "yyyyMMdd") + "/" + IdUtil.fastUUID() + ".xlsx", isIn, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"));
}
} catch (Exception e) {
@ -542,19 +542,16 @@ public class UserControllerService {
List<DictionaryItem> suppliersCategory = dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_SUPPLIERS_CATEGORY);
List<UserSupplier> userSuppliers = new ArrayList<>();
for (SupplierExcelDTO dto : data) {
UserSupplier userSupplier = new UserSupplier();
Long typeId = 0L;
UserSupplier userSupplier = null;// new UserSupplier();
StringBuilder sb = new StringBuilder();
if (Objects.isNull(dto.getSupplierCode())) {
sb.append("供应商编号不能为空;");
} else if (data.stream().filter(item -> StrUtil.equals(item.getSupplierCode(), dto.getSupplierCode())).count() > 1) {
sb.append("供应商编号重复;");
} else {
userSupplier = userSupplierService.lambdaQuery().eq(UserSupplier::getSupplierCode, dto.getSupplierCode()).one();
}
if (StrUtil.isBlank(dto.getSupplierName())) {
sb.append("供应商名称不能为空;");
} else {
userSupplier.setSupplierName(dto.getSupplierName());
}
if (StrUtil.isBlank(dto.getTypeName())) {
sb.append("供应商类别不能为空;");
@ -563,24 +560,38 @@ public class UserControllerService {
if (Objects.isNull(type)) {
sb.append("供应商类别无效;");
} else {
userSupplier.setTypeId(type.getId());
typeId = type.getId();
}
}
if (sb.length() > 0) {
dto.setResult(sb.toString());
continue;
}
// if (data.stream().noneMatch(it -> StrUtil.isBlank(it.getResult()))) {
// return false;
// }
userSupplier = userSupplierService.lambdaQuery().eq(UserSupplier::getSupplierCode, dto.getSupplierCode()).one();
if (Objects.isNull(userSupplier)) {
userSupplier = new UserSupplier();
userSupplier.setUserId(0L);
userSupplier.setAbbreviation(dto.getAbbreviation());
userSupplier.setAbbreviation1(StringUtil.toPinYin(dto.getAbbreviation()));
userSupplier.setAbbreviation2(StringUtil.getPinYinFirstLetter(dto.getAbbreviation()));
userSupplier.setPciName(dto.getUserName());
userSupplier.setPciPhone(dto.getPhone());
userSupplier.setDefaultLanguage("");
userSupplier.setAvatar("");
userSupplier.setState(1);
userSupplier.setIsOpenAccount(false);
userSupplier.setRemark(dto.getRemark());
userSupplier.setCreateBy(UserUtil.getUserName());
userSupplier.setCreateTime(LocalDateTime.now());
userSupplier.setUpdateBy(UserUtil.getUserName());
userSupplier.setUpdateTime(LocalDateTime.now());
}
userSupplier.setSupplierName(dto.getSupplierName());
userSupplier.setTypeId(typeId);
userSupplier.setSupplierCode(dto.getSupplierCode());
userSupplier.setPciName(dto.getUserName());
userSupplier.setPciPhone(dto.getPhone());
userSupplier.setAbbreviation(dto.getAbbreviation());
userSupplier.setAbbreviation1(StringUtil.toPinYin(dto.getAbbreviation()));
userSupplier.setAbbreviation2(StringUtil.getPinYinFirstLetter(dto.getAbbreviation()));
userSupplier.setRemark(dto.getRemark());
dto.setResult(sb.toString());
userSuppliers.add(userSupplier);
}
@ -604,7 +615,7 @@ public class UserControllerService {
DictionaryItem type = suppliersCategory.stream().filter(it -> Objects.equals(it.getId(), vu.getTypeId())).findFirst().get();
dto.setTypeName(type.getName());
dto.setRemark(vu.getRemark());
dto.setUserCode(vu.getUserCode());
// dto.setUserCode(vu.getUserCode());
return dto;
}).collect(Collectors.toList());
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
@ -615,7 +626,7 @@ public class UserControllerService {
.setSupplierName("供应商名称")
.setTypeName("供应商类别")
.setUserName("负责人姓名")
.setUserCode("登录账号,不填则不开通账号")
// .setUserCode("登录账号,不填则不开通账号")
.setPhone("负责人电话")
.setAbbreviation("供应商简称")
.setRemark("备注信息,此行为提示信息,导入时请删除"));
@ -717,4 +728,35 @@ public class UserControllerService {
}
return vo;
}
public void exportSupplierByFilter(HttpServletResponse response, List<UserSupplierVO> records) throws IOException {
List<SupplierExcelExportDTO> datas = records.stream().map(vu -> {
SupplierExcelExportDTO dto = new SupplierExcelExportDTO();
dto.setSupplierCode(vu.getSupplierCode());
dto.setSupplierName(vu.getSupplierName());
dto.setAbbreviation(vu.getAbbreviation());
dto.setUserName(vu.getPciName());
dto.setPhone(vu.getPciPhone());
//DictionaryItem type = suppliersCategory.stream().filter(it -> Objects.equals(it.getId(), vu.getTypeId())).findFirst().get();
dto.setTypeName(vu.getTypeName());
dto.setRemark(vu.getRemark());
// dto.setUserCode(vu.getSupplierCode());
return dto;
}).collect(Collectors.toList());
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("供应商导出.xlsx", StandardCharsets.UTF_8));
if (CollectionUtil.isEmpty(datas)) {
datas.add(new SupplierExcelExportDTO()
.setSupplierCode("供应商编号")
.setSupplierName("供应商名称")
.setTypeName("供应商类别")
.setUserName("负责人姓名")
.setPhone("负责人电话")
.setAbbreviation("供应商简称")
.setRemark("备注信息,此行为提示信息,导入时请删除"));
}
new Workbook()
.addSheet(new ListSheet<>(datas))
.writeTo(response.getOutputStream());
}
}

View File

@ -47,8 +47,8 @@ public class SupplierExcelExportDTO {
/**
* 登录账号
*/
@ExcelColumn("登录账号")
private String userCode;
// @ExcelColumn("登录账号")
// private String userCode;
/**
* 备注

View File

@ -10,4 +10,9 @@ public class BarcodeLessReceivingSearchQO {
* 送货单Id
*/
private Long id;
/**
* 订单号 ,和送货单号二选一
*/
private String orderNo;
}

View File

@ -7,6 +7,8 @@ import com.nflg.wms.common.pojo.qo.UserSupplierSearchQO;
import com.nflg.wms.common.pojo.vo.UserSupplierVO;
import com.nflg.wms.repository.entity.UserSupplier;
import java.util.List;
/**
* <p>
* Mapper 接口
@ -18,4 +20,5 @@ import com.nflg.wms.repository.entity.UserSupplier;
public interface UserSupplierMapper extends BaseMapper<UserSupplier> {
IPage<UserSupplierVO> search(UserSupplierSearchQO request, Page<Object> objectPage);
}

View File

@ -8,6 +8,8 @@ import com.nflg.wms.repository.entity.UserSupplier;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import java.util.List;
/**
* <p>
* 服务类
@ -27,4 +29,5 @@ public interface IUserSupplierService extends IService<UserSupplier> {
UserSupplier getByUserId(Long id);
UserSupplier getByCode(@NotBlank String supplierNo);
}

View File

@ -14,6 +14,8 @@ import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* <p>
* 服务实现类
@ -65,4 +67,5 @@ public class UserSupplierServiceImpl extends ServiceImpl<UserSupplierMapper, Use
public UserSupplier getByCode(String supplierNo) {
return lambdaQuery().eq(UserSupplier::getSupplierCode, supplierNo).one();
}
}