Commit 41910597 by 杨浩

供应商订单

parent b16932ae
package cn.iocoder.foodnexus.module.erp.controller.admin.purchase;
import cn.iocoder.foodnexus.framework.apilog.core.annotation.ApiAccessLog;
import cn.iocoder.foodnexus.framework.common.enums.CommonStatusEnum;
import cn.iocoder.foodnexus.framework.common.pojo.CommonResult;
import cn.iocoder.foodnexus.framework.common.pojo.PageParam;
import cn.iocoder.foodnexus.framework.common.pojo.PageResult;
import cn.iocoder.foodnexus.framework.common.util.object.BeanUtils;
import cn.iocoder.foodnexus.framework.excel.core.util.ExcelUtils;
import cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.supplier.ErpSupplierPageReqVO;
import cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.supplier.ErpSupplierRespVO;
import cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.supplier.ErpSupplierSaveReqVO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.purchase.ErpSupplierDO;
import cn.iocoder.foodnexus.module.erp.service.purchase.ErpSupplierService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.util.List;
import static cn.iocoder.foodnexus.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.foodnexus.framework.common.pojo.CommonResult.success;
import static cn.iocoder.foodnexus.framework.common.util.collection.CollectionUtils.convertList;
@Tag(name = "管理后台 - ERP 供应商")
@RestController
@RequestMapping("/erp/supplier")
@Validated
public class ErpSupplierController {
@Resource
private ErpSupplierService supplierService;
@PostMapping("/create")
@Operation(summary = "创建供应商")
@PreAuthorize("@ss.hasPermission('erp:supplier:create')")
public CommonResult<Long> createSupplier(@Valid @RequestBody ErpSupplierSaveReqVO createReqVO) {
return success(supplierService.createSupplier(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新供应商")
@PreAuthorize("@ss.hasPermission('erp:supplier:update')")
public CommonResult<Boolean> updateSupplier(@Valid @RequestBody ErpSupplierSaveReqVO updateReqVO) {
supplierService.updateSupplier(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除供应商")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('erp:supplier:delete')")
public CommonResult<Boolean> deleteSupplier(@RequestParam("id") Long id) {
supplierService.deleteSupplier(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得供应商")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:supplier:query')")
public CommonResult<ErpSupplierRespVO> getSupplier(@RequestParam("id") Long id) {
ErpSupplierDO supplier = supplierService.getSupplier(id);
return success(BeanUtils.toBean(supplier, ErpSupplierRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得供应商分页")
@PreAuthorize("@ss.hasPermission('erp:supplier:query')")
public CommonResult<PageResult<ErpSupplierRespVO>> getSupplierPage(@Valid ErpSupplierPageReqVO pageReqVO) {
PageResult<ErpSupplierDO> pageResult = supplierService.getSupplierPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ErpSupplierRespVO.class));
}
@GetMapping("/simple-list")
@Operation(summary = "获得供应商精简列表", description = "只包含被开启的供应商,主要用于前端的下拉选项")
public CommonResult<List<ErpSupplierRespVO>> getSupplierSimpleList() {
List<ErpSupplierDO> list = supplierService.getSupplierListByStatus(CommonStatusEnum.ENABLE.getStatus());
return success(convertList(list, supplier -> new ErpSupplierRespVO().setId(supplier.getId())));
}
@GetMapping("/export-excel")
@Operation(summary = "导出供应商 Excel")
@PreAuthorize("@ss.hasPermission('erp:supplier:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportSupplierExcel(@Valid ErpSupplierPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ErpSupplierDO> list = supplierService.getSupplierPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "供应商.xls", "数据", ErpSupplierRespVO.class,
BeanUtils.toBean(list, ErpSupplierRespVO.class));
}
}
\ No newline at end of file
...@@ -43,7 +43,7 @@ import static cn.iocoder.foodnexus.framework.common.util.collection.CollectionUt ...@@ -43,7 +43,7 @@ import static cn.iocoder.foodnexus.framework.common.util.collection.CollectionUt
* create at: 2025/9/23 11:11 * create at: 2025/9/23 11:11
* @description: 采购订单 * @description: 采购订单
*/ */
@Tag(name = "管理后台 - ERP 采购订单(仓库管理)") @Tag(name = "供应商 - ERP 采购订单(仓库管理)")
@RestController @RestController
@RequestMapping("/supplier/purchase-order") @RequestMapping("/supplier/purchase-order")
@Validated @Validated
...@@ -90,6 +90,13 @@ public class PurchaseOrderController { ...@@ -90,6 +90,13 @@ public class PurchaseOrderController {
return success(buildPurchaseOrderVOPageResult(pageResult)); return success(buildPurchaseOrderVOPageResult(pageResult));
} }
@GetMapping("count")
@Operation(summary = "根据配送状态统计数量")
public CommonResult<Map<String, Long>> queryCount(@Valid ErpPurchaseOrderPageReqVO pageReqVO) {
pageReqVO.setSupplierId(supplierApi.querySupplierIdByUserId(SecurityFrameworkUtils.getLoginUserId()));
return success(purchaseOrderService.queryCountByDeliveryStatus(pageReqVO));
}
@PostMapping("/accepting-orders") @PostMapping("/accepting-orders")
@Operation(summary = "接单") @Operation(summary = "接单")
@Parameter(name = "ids", description = "编号", required = true) @Parameter(name = "ids", description = "编号", required = true)
......
...@@ -10,6 +10,8 @@ import cn.iocoder.foodnexus.module.erp.api.enums.ErpAuditStatus; ...@@ -10,6 +10,8 @@ import cn.iocoder.foodnexus.module.erp.api.enums.ErpAuditStatus;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
/** /**
...@@ -20,7 +22,24 @@ import java.util.Objects; ...@@ -20,7 +22,24 @@ import java.util.Objects;
@Mapper @Mapper
public interface ErpPurchaseOrderMapper extends BaseMapperX<ErpPurchaseOrderDO> { public interface ErpPurchaseOrderMapper extends BaseMapperX<ErpPurchaseOrderDO> {
default List<Map<String, Object>> selectCountGroupbyDeliveryStatus(ErpPurchaseOrderPageReqVO pageReqVO) {
MPJLambdaWrapperX<ErpPurchaseOrderDO> query = this.query(pageReqVO);
query.selectAs(ErpPurchaseOrderDO::getDeliveryStatus, "deliveryStatus");
query.selectCount(ErpPurchaseOrderDO::getId, "orderCount");
query.groupBy(ErpPurchaseOrderDO::getDeliveryStatus);
return selectMaps(query);
}
default Long selectCount(ErpPurchaseOrderPageReqVO reqVO) {
return selectJoinCount(this.query(reqVO));
}
default PageResult<ErpPurchaseOrderDO> selectPage(ErpPurchaseOrderPageReqVO reqVO) { default PageResult<ErpPurchaseOrderDO> selectPage(ErpPurchaseOrderPageReqVO reqVO) {
return selectJoinPage(reqVO, ErpPurchaseOrderDO.class, this.query(reqVO));
}
default MPJLambdaWrapperX<ErpPurchaseOrderDO> query(ErpPurchaseOrderPageReqVO reqVO) {
MPJLambdaWrapperX<ErpPurchaseOrderDO> query = new MPJLambdaWrapperX<ErpPurchaseOrderDO>() MPJLambdaWrapperX<ErpPurchaseOrderDO> query = new MPJLambdaWrapperX<ErpPurchaseOrderDO>()
.likeIfPresent(ErpPurchaseOrderDO::getNo, reqVO.getNo()) .likeIfPresent(ErpPurchaseOrderDO::getNo, reqVO.getNo())
.eqIfPresent(ErpPurchaseOrderDO::getSupplierId, reqVO.getSupplierId()) .eqIfPresent(ErpPurchaseOrderDO::getSupplierId, reqVO.getSupplierId())
...@@ -60,7 +79,6 @@ public interface ErpPurchaseOrderMapper extends BaseMapperX<ErpPurchaseOrderDO> ...@@ -60,7 +79,6 @@ public interface ErpPurchaseOrderMapper extends BaseMapperX<ErpPurchaseOrderDO>
.eq(reqVO.getProductId() != null, ErpPurchaseOrderItemDO::getProductId, reqVO.getProductId()) .eq(reqVO.getProductId() != null, ErpPurchaseOrderItemDO::getProductId, reqVO.getProductId())
.groupBy(ErpPurchaseOrderDO::getId); // 避免 1 对多查询,产生相同的 1 .groupBy(ErpPurchaseOrderDO::getId); // 避免 1 对多查询,产生相同的 1
} }
return selectJoinPage(reqVO, ErpPurchaseOrderDO.class, query);
} }
default int updateByIdAndStatus(Long id, Integer status, ErpPurchaseOrderDO updateObj) { default int updateByIdAndStatus(Long id, Integer status, ErpPurchaseOrderDO updateObj) {
......
...@@ -116,4 +116,5 @@ public interface ErpPurchaseOrderService { ...@@ -116,4 +116,5 @@ public interface ErpPurchaseOrderService {
*/ */
void delivery(List<Long> ids, Long supplierId, ErpDeliveryStatus oriStatus, ErpDeliveryStatus updateStatus, CustomerOrderStatus updateOrderStatus); void delivery(List<Long> ids, Long supplierId, ErpDeliveryStatus oriStatus, ErpDeliveryStatus updateStatus, CustomerOrderStatus updateOrderStatus);
Map<String, Long> queryCountByDeliveryStatus(ErpPurchaseOrderPageReqVO pageReqVO);
} }
\ No newline at end of file
...@@ -94,7 +94,7 @@ public class ErpPurchaseOrderServiceImpl implements ErpPurchaseOrderService { ...@@ -94,7 +94,7 @@ public class ErpPurchaseOrderServiceImpl implements ErpPurchaseOrderService {
// 2.1 插入订单 // 2.1 插入订单
ErpPurchaseOrderDO purchaseOrder = BeanUtils.toBean(createReqVO, ErpPurchaseOrderDO.class, in -> in ErpPurchaseOrderDO purchaseOrder = BeanUtils.toBean(createReqVO, ErpPurchaseOrderDO.class, in -> in
.setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus())); .setNo(no).setStatus(ErpAuditStatus.APPROVE.getStatus()));
calculateTotalPrice(purchaseOrder, purchaseOrderItems); calculateTotalPrice(purchaseOrder, purchaseOrderItems);
purchaseOrderMapper.insert(purchaseOrder); purchaseOrderMapper.insert(purchaseOrder);
// 2.2 插入订单项 // 2.2 插入订单项
...@@ -357,6 +357,22 @@ public class ErpPurchaseOrderServiceImpl implements ErpPurchaseOrderService { ...@@ -357,6 +357,22 @@ public class ErpPurchaseOrderServiceImpl implements ErpPurchaseOrderService {
.in(ErpPurchaseOrderDO::getId, ids)); .in(ErpPurchaseOrderDO::getId, ids));
} }
@Override
public Map<String, Long> queryCountByDeliveryStatus(ErpPurchaseOrderPageReqVO pageReqVO) {
Map<String, Long> resultMap = new HashMap<>();
pageReqVO.setPageSize(-1);
Long all = purchaseOrderMapper.selectCount(pageReqVO);
resultMap.put("all", CommonUtil.getEls(all, 0L));
if (CommonUtil.isNotEmpty(all) && all > 0) {
List<Map<String, Object>> maps = purchaseOrderMapper.selectCountGroupbyDeliveryStatus(pageReqVO);
if (CommonUtil.isNotEmpty(maps)) {
maps.forEach(item ->
resultMap.put((String) item.get("deliveryStatus"), (Long) item.get("orderCount")));
}
}
return resultMap;
}
@Async @Async
@TransactionalEventListener(classes = PurchaseOrderSplitEvent.class, phase = TransactionPhase.AFTER_COMMIT) @TransactionalEventListener(classes = PurchaseOrderSplitEvent.class, phase = TransactionPhase.AFTER_COMMIT)
public void orderSplit(PurchaseOrderSplitEvent event) { public void orderSplit(PurchaseOrderSplitEvent event) {
......
package cn.iocoder.foodnexus.module.operations.controller.admin.inquiresupplierpush; package cn.iocoder.foodnexus.module.operations.controller.admin.inquiresupplierpush;
import cn.iocoder.foodnexus.framework.common.enums.UserSystemEnum;
import cn.iocoder.foodnexus.framework.common.util.CommonUtil; import cn.iocoder.foodnexus.framework.common.util.CommonUtil;
import cn.iocoder.foodnexus.framework.common.util.collection.MapUtils; import cn.iocoder.foodnexus.framework.common.util.collection.MapUtils;
import cn.iocoder.foodnexus.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.foodnexus.module.erp.api.service.ErpSupplierApi; import cn.iocoder.foodnexus.module.erp.api.service.ErpSupplierApi;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.purchase.ErpSupplierDO; import cn.iocoder.foodnexus.module.erp.dal.dataobject.purchase.ErpSupplierDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.sale.ErpCustomerDO; import cn.iocoder.foodnexus.module.erp.dal.dataobject.sale.ErpCustomerDO;
import cn.iocoder.foodnexus.module.erp.service.purchase.ErpSupplierService; import cn.iocoder.foodnexus.module.erp.service.purchase.ErpSupplierService;
import cn.iocoder.foodnexus.module.operations.controller.admin.inquirepriceitem.vo.InquirePriceItemRespVO; import cn.iocoder.foodnexus.module.operations.controller.admin.inquirepriceitem.vo.InquirePriceItemRespVO;
import cn.iocoder.foodnexus.module.operations.controller.app.inquiresupplierpush.vo.AppInquireSupplierPushConfirmReqVO;
import cn.iocoder.foodnexus.module.operations.dal.dataobject.inquirepriceitem.InquirePriceItemDO; import cn.iocoder.foodnexus.module.operations.dal.dataobject.inquirepriceitem.InquirePriceItemDO;
import cn.iocoder.foodnexus.module.operations.service.inquirepriceitem.InquirePriceItemService; import cn.iocoder.foodnexus.module.operations.service.inquirepriceitem.InquirePriceItemService;
import cn.iocoder.foodnexus.module.product.controller.admin.spu.vo.ProductSpuRespVO; import cn.iocoder.foodnexus.module.product.controller.admin.spu.vo.ProductSpuRespVO;
import cn.iocoder.foodnexus.module.product.dal.dataobject.spu.ProductSpuDO; import cn.iocoder.foodnexus.module.product.dal.dataobject.spu.ProductSpuDO;
import cn.iocoder.foodnexus.module.product.service.spu.ProductSpuService; import cn.iocoder.foodnexus.module.product.service.spu.ProductSpuService;
import cn.iocoder.foodnexus.module.system.annotations.AppSystemAuth;
import org.apache.commons.compress.utils.Lists; import org.apache.commons.compress.utils.Lists;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -45,10 +49,11 @@ import cn.iocoder.foodnexus.module.operations.controller.admin.inquiresupplierpu ...@@ -45,10 +49,11 @@ import cn.iocoder.foodnexus.module.operations.controller.admin.inquiresupplierpu
import cn.iocoder.foodnexus.module.operations.dal.dataobject.inquiresupplierpush.InquireSupplierPushDO; import cn.iocoder.foodnexus.module.operations.dal.dataobject.inquiresupplierpush.InquireSupplierPushDO;
import cn.iocoder.foodnexus.module.operations.service.inquiresupplierpush.InquireSupplierPushService; import cn.iocoder.foodnexus.module.operations.service.inquiresupplierpush.InquireSupplierPushService;
@Tag(name = "管理后台 - 询价推送") @Tag(name = "供应商端 - 询价推送")
@RestController @RestController
@RequestMapping("/operations/inquire-supplier-push") @RequestMapping("/operations/inquire-supplier-push")
@Validated @Validated
@AppSystemAuth(UserSystemEnum.SUPPLIER)
public class InquireSupplierPushController { public class InquireSupplierPushController {
@Resource @Resource
...@@ -67,7 +72,7 @@ public class InquireSupplierPushController { ...@@ -67,7 +72,7 @@ public class InquireSupplierPushController {
private ErpSupplierService supplierService; private ErpSupplierService supplierService;
@PostMapping("/create") /*@PostMapping("/create")
@Operation(summary = "创建询价推送") @Operation(summary = "创建询价推送")
@PreAuthorize("@ss.hasPermission('operations:inquire-supplier-push:create')") @PreAuthorize("@ss.hasPermission('operations:inquire-supplier-push:create')")
public CommonResult<Long> createInquireSupplierPush(@Valid @RequestBody InquireSupplierPushSaveReqVO createReqVO) { public CommonResult<Long> createInquireSupplierPush(@Valid @RequestBody InquireSupplierPushSaveReqVO createReqVO) {
...@@ -98,6 +103,14 @@ public class InquireSupplierPushController { ...@@ -98,6 +103,14 @@ public class InquireSupplierPushController {
public CommonResult<Boolean> deleteInquireSupplierPushList(@RequestParam("ids") List<Long> ids) { public CommonResult<Boolean> deleteInquireSupplierPushList(@RequestParam("ids") List<Long> ids) {
inquireSupplierPushService.deleteInquireSupplierPushListByIds(ids); inquireSupplierPushService.deleteInquireSupplierPushListByIds(ids);
return success(true); return success(true);
}*/
@PostMapping("/confirm")
@Operation(summary = "确认询价")
public CommonResult<Boolean> updateInquireSupplierPush(@Valid @RequestBody AppInquireSupplierPushConfirmReqVO updateReqVO) {
updateReqVO.setSupplierId(supplierApi.querySupplierIdByUserId(SecurityFrameworkUtils.getLoginUserId()));
inquireSupplierPushService.confirm(updateReqVO);
return success(true);
} }
@GetMapping("/get") @GetMapping("/get")
......
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