Commit 828611ee by 杨浩

供应商 - 发货

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