Commit 828611ee by 杨浩

供应商 - 发货

parent 8e97fb84
......@@ -197,8 +197,10 @@ public class ErpPurchaseOrderController {
@Operation(summary = "供应商 - 发货")
@Parameter(name = "ids", description = "编号", required = true)
@AppSystemAuth(UserSystemEnum.SUPPLIER)
public CommonResult<Boolean> supplierPurchaseOrderDelivery(@RequestBody @Valid SupplierPurchaseOrderDeliveryReqVO reqVO) {
purchaseOrderService.delivery(reqVO, supplierApi.querySupplierIdByUserId(SecurityFrameworkUtils.getLoginUserId()),
public CommonResult<Boolean> supplierPurchaseOrderDelivery(@RequestBody @Valid SupplierPurchaseOrderDeliveryReqVO.Item reqVO) {
SupplierPurchaseOrderDeliveryReqVO delivery = new SupplierPurchaseOrderDeliveryReqVO();
delivery.setIds(CommonUtil.asList(reqVO));
purchaseOrderService.delivery(delivery, supplierApi.querySupplierIdByUserId(SecurityFrameworkUtils.getLoginUserId()),
ErpDeliveryStatus.NOT_YET, ErpDeliveryStatus.ALREADY, CustomerOrderStatus.SUPPLIER_SHIP);
return success(Boolean.TRUE);
}
......
......@@ -227,6 +227,9 @@ public class ErpPurchaseOrderRespVO {
@Schema(description = "退货金额")
private Integer returnsTotal;
@Schema(description = "附件")
private String annex;
}
}
package cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.supplier;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
......@@ -17,9 +18,9 @@ import java.util.List;
@Schema(description = "供应商后台发货")
public class SupplierPurchaseOrderDeliveryReqVO {
@Schema(description = "items", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "items不能为空")
private List<Item> items;
@Schema(description = "ids", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "ids不能为空")
private List<Item> ids;
@Data
public static class Item {
......@@ -27,8 +28,19 @@ public class SupplierPurchaseOrderDeliveryReqVO {
@NotNull(message = "id不能为空")
private Long id;
@Schema(description = "文件附件url")
private String file;
@Valid
private List<ProductFile> productFiles;
}
@Data
public static class ProductFile {
@Schema(description = "商品id")
@NotNull(message = "商品id不能为空")
private Long productId;
@Schema(description = "附件")
private String annex;
}
public static SupplierPurchaseOrderDeliveryReqVO transform(List<Long> ids) {
......@@ -39,7 +51,7 @@ public class SupplierPurchaseOrderDeliveryReqVO {
item.setId(id);
items.add(item);
}
data.setItems(items);
data.setIds(items);
return data;
}
......
......@@ -95,4 +95,9 @@ public class ErpPurchaseOrderItemDO extends BaseDO {
*/
private Long customerOrderItemId;
/**
* 附件
*/
private String annex;
}
\ No newline at end of file
......@@ -94,7 +94,7 @@ public class ErpPurchaseOrderServiceImpl implements ErpPurchaseOrderService {
@Transactional(rollbackFor = Exception.class)
public Long createPurchaseOrder(ErpPurchaseOrderSaveReqVO createReqVO) {
// 1.1 校验订单项的有效性
List<ErpPurchaseOrderItemDO> purchaseOrderItems = validatePurchaseOrderItems(createReqVO.getItems());
List<ErpPurchaseOrderItemDO> purchaseOrderItems = validatePurchaseOrderItems(createreqVO.getIds());
// 1.2 校验供应商
supplierService.validateSupplier(createReqVO.getSupplierId());
// 1.3 校验结算账户
......@@ -133,7 +133,7 @@ public class ErpPurchaseOrderServiceImpl implements ErpPurchaseOrderService {
accountService.validateAccount(updateReqVO.getAccountId());
}
// 1.4 校验订单项的有效性
List<ErpPurchaseOrderItemDO> purchaseOrderItems = validatePurchaseOrderItems(updateReqVO.getItems());
List<ErpPurchaseOrderItemDO> purchaseOrderItems = validatePurchaseOrderItems(updatereqVO.getIds());
// 2.1 更新订单
ErpPurchaseOrderDO updateObj = BeanUtils.toBean(updateReqVO, ErpPurchaseOrderDO.class);
......@@ -332,8 +332,8 @@ public class ErpPurchaseOrderServiceImpl implements ErpPurchaseOrderService {
@Override
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
public void delivery(SupplierPurchaseOrderDeliveryReqVO reqVO, Long supplierId, ErpDeliveryStatus oriStatus, ErpDeliveryStatus updateStatus, CustomerOrderStatus updateOrderStatus) {
Map<Long, String> idMap = CommonUtil.listConvertMap(reqVO.getItems(), SupplierPurchaseOrderDeliveryReqVO.Item::getId, SupplierPurchaseOrderDeliveryReqVO.Item::getFile);
Set<Long> ids = CommonUtil.listConvertSet(reqVO.getItems(), SupplierPurchaseOrderDeliveryReqVO.Item::getId);
Map<Long, List<SupplierPurchaseOrderDeliveryReqVO.ProductFile>> idMap = CommonUtil.listConvertMap(reqVO.getIds(), SupplierPurchaseOrderDeliveryReqVO.Item::getId, SupplierPurchaseOrderDeliveryReqVO.Item::getProductFiles);
Set<Long> ids = CommonUtil.listConvertSet(reqVO.getIds(), SupplierPurchaseOrderDeliveryReqVO.Item::getId);
List<ErpPurchaseOrderDO> orderList = purchaseOrderMapper.selectList(Wrappers.<ErpPurchaseOrderDO>lambdaQuery()
.in(ErpPurchaseOrderDO::getId, ids)
.eq(CommonUtil.isNotEmpty(supplierId) ,ErpPurchaseOrderDO::getSupplierId, supplierId));
......@@ -369,14 +369,19 @@ public class ErpPurchaseOrderServiceImpl implements ErpPurchaseOrderService {
customerOrderSet.add(item.getCustomerOrderId());
}
String fileUrl = idMap.get(item.getId());
if (CommonUtil.isNotBlank(fileUrl)) {
item.setFileUrl(fileUrl);
}
purchaseOrderMapper.update(Wrappers.<ErpPurchaseOrderDO>lambdaUpdate()
.set(ErpPurchaseOrderDO::getDeliveryStatus, updateStatus)
.set(CommonUtil.isNotBlank(fileUrl), ErpPurchaseOrderDO::getFileUrl, fileUrl)
.eq(ErpPurchaseOrderDO::getId, item.getId()));
List<SupplierPurchaseOrderDeliveryReqVO.ProductFile> productFiles = idMap.get(item.getId());
if (CommonUtil.isNotEmpty(productFiles)) {
productFiles.forEach(purchaseOrderItem -> {
purchaseOrderItemMapper.update(Wrappers.<ErpPurchaseOrderItemDO>lambdaUpdate()
.set(ErpPurchaseOrderItemDO::getAnnex, purchaseOrderItem.getAnnex())
.eq(ErpPurchaseOrderItemDO::getOrderId, item.getId())
.eq(ErpPurchaseOrderItemDO::getProductId, purchaseOrderItem.getProductId()));
});
}
}
......
package cn.iocoder.foodnexus.module.operations.controller.admin.customerrequire;
import cn.iocoder.foodnexus.framework.common.util.CommonUtil;
import cn.iocoder.foodnexus.framework.common.util.collection.MapUtils;
import cn.iocoder.foodnexus.module.erp.api.service.ErpCustomerApi;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
......@@ -38,12 +42,14 @@ public class CustomerRequireController {
@Resource
private CustomerRequireService customerRequireService;
@Autowired
private ErpCustomerApi customerApi;
@PostMapping("/require")
@Operation(summary = "受理客户需求")
@Parameter(name = "id", description = "编号", required = true)
public CommonResult<Boolean> require(@RequestParam("id") Long id) {
customerRequireService.require(id);
public CommonResult<Boolean> require(@RequestBody @Valid CustomerRequireRequireReqVO reqVO) {
customerRequireService.require(reqVO);
return success(true);
}
......@@ -71,7 +77,9 @@ public class CustomerRequireController {
@PreAuthorize("@ss.hasPermission('oper:customer-require:query')")
public CommonResult<CustomerRequireRespVO> getCustomerRequire(@RequestParam("id") Long id) {
CustomerRequireDO customerRequire = customerRequireService.getCustomerRequire(id);
return success(BeanUtils.toBean(customerRequire, CustomerRequireRespVO.class));
return success(BeanUtils.toBean(customerRequire, CustomerRequireRespVO.class, item -> {
item.setCustomerName(customerApi.queryNameStrById(item.getCustomerId()));
}));
}
@GetMapping("/page")
......@@ -79,7 +87,10 @@ public class CustomerRequireController {
@PreAuthorize("@ss.hasPermission('oper:customer-require:query')")
public CommonResult<PageResult<CustomerRequireRespVO>> getCustomerRequirePage(@Valid CustomerRequirePageReqVO pageReqVO) {
PageResult<CustomerRequireDO> pageResult = customerRequireService.getCustomerRequirePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, CustomerRequireRespVO.class));
Map<Long, String> customerNameMap = customerApi.queryNameMapByIds(CommonUtil.listConvertSet(pageResult.getList(), CustomerRequireDO::getCustomerId));
return success(BeanUtils.toBean(pageResult, CustomerRequireRespVO.class, item -> {
MapUtils.findAndThen(customerNameMap, item.getCustomerId(), item::setCustomerName);
}));
}
@GetMapping("/export-excel")
......
package cn.iocoder.foodnexus.module.operations.controller.admin.customerrequire.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* @author : yanghao
* create at: 2026/1/6 10:02
* @description: 受理
*/
@Data
public class CustomerRequireRequireReqVO {
@Schema(description = "id")
@NotNull(message = "id不能为空")
private Long id;
@Schema(description = "备注")
private String remark;
}
......@@ -20,6 +20,9 @@ public class CustomerRequireRespVO {
@ExcelProperty("客户id")
private Long customerId;
@Schema(description = "客户名称")
private String customerName;
@Schema(description = "需求标题", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("需求标题")
private String requireTitle;
......@@ -54,4 +57,7 @@ public class CustomerRequireRespVO {
@ExcelProperty("创建人")
private String creator;
@Schema(description = "备注")
private String remark;
}
\ No newline at end of file
......@@ -51,6 +51,10 @@ public class CustomerRequireDO extends BaseDO {
* 受理时间
*/
private LocalDateTime requireTime;
/**
* 备注
*/
private String remark;
}
\ No newline at end of file
......@@ -59,5 +59,5 @@ public interface CustomerRequireService {
*/
PageResult<CustomerRequireDO> getCustomerRequirePage(CustomerRequirePageReqVO pageReqVO);
void require(Long id);
void require(CustomerRequireRequireReqVO id);
}
\ No newline at end of file
package cn.iocoder.foodnexus.module.operations.service.customerrequire;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.foodnexus.framework.common.util.CommonUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
......@@ -89,11 +90,13 @@ public class CustomerRequireServiceImpl implements CustomerRequireService {
}
@Override
public void require(Long id) {
public void require(CustomerRequireRequireReqVO reqVO) {
Long id = reqVO.getId();
this.validateCustomerRequireExists(id);
customerRequireMapper.update(Wrappers.<CustomerRequireDO>lambdaUpdate()
.set(CustomerRequireDO::getIsRequire, Boolean.TRUE)
.set(CustomerRequireDO::getRequireTime, LocalDateTime.now())
.set(CommonUtil.isNotBlank(reqVO.getRemark()), CustomerRequireDO::getRemark, reqVO.getRemark())
.eq(CustomerRequireDO::getId, id));
}
......
......@@ -17,7 +17,7 @@
<module>foodnexus-module-infra</module>
<!--<module>foodnexus-module-member</module>-->
<!-- <module>foodnexus-module-bpm</module>-->
<!-- <module>foodnexus-module-report</module>-->
<module>foodnexus-module-report</module>
<!-- <module>foodnexus-module-mp</module>-->
<!--<module>foodnexus-module-pay</module>-->
<module>foodnexus-module-mall</module>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment