package com.ruoyi.sales.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.approve.bean.vo.ApproveProcessVO; import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl; import com.ruoyi.common.utils.OrderUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.security.LoginUser; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.framework.web.domain.R; import com.ruoyi.sales.dto.ShippingInfoDto; import com.ruoyi.sales.mapper.ShippingInfoMapper; import com.ruoyi.sales.pojo.ShippingInfo; import com.ruoyi.sales.service.ShippingInfoService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.io.IOException; import java.time.LocalDate; import java.util.List; /** * @author :yys * @date : 2025/10/22 9:34 */ @RestController @RequestMapping("/shippingInfo") @Tag(name = "发货信息管理") @AllArgsConstructor public class ShippingInfoController extends BaseController { private ShippingInfoService shippingInfoService; private ApproveProcessServiceImpl approveProcessService; private ShippingInfoMapper shippingInfoMapper; @GetMapping("/listPage") @Operation(summary = "发货信息列表") public AjaxResult listPage(Page page, ShippingInfo req) { IPage listPage = shippingInfoService.listPage(page,req); return AjaxResult.success(listPage); } @PostMapping("/add") @Operation(summary = "添加发货信息") @Transactional(rollbackFor = Exception.class) @Log(title = "发货信息管理", businessType = BusinessType.INSERT) public AjaxResult add(@RequestBody ShippingInfoDto req) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String sh = OrderUtils.countTodayByCreateTime(shippingInfoMapper, "SH","shipping_no"); // 发货审批 ApproveProcessVO approveProcessVO = new ApproveProcessVO(); approveProcessVO.setApproveType(7); approveProcessVO.setApproveDeptId(loginUser.getCurrentDeptId()); approveProcessVO.setApproveReason(req.getType() + ":" +sh); approveProcessVO.setApproveUserIds(req.getApproveUserIds()); approveProcessVO.setApproveUser(loginUser.getUserId()); approveProcessVO.setApproveTime(LocalDate.now().toString()); approveProcessService.addApprove(approveProcessVO); // 添加发货消息 req.setShippingNo(sh); req.setStatus("待审核"); boolean save = shippingInfoService.add(req); return save ? AjaxResult.success() : AjaxResult.error(); } @Operation(summary = "发货扣库存") @PostMapping("/deductStock") @Transactional(rollbackFor = Exception.class) @Log(title = "发货信息管理", businessType = BusinessType.UPDATE) public AjaxResult deductStock(@RequestBody ShippingInfoDto req) throws IOException { return shippingInfoService.deductStock( req) ? AjaxResult.success() : AjaxResult.error(); } @PostMapping("/update") @Operation(summary = "修改发货信息") @Transactional(rollbackFor = Exception.class) @Log(title = "发货信息管理", businessType = BusinessType.UPDATE) public AjaxResult update(@RequestBody ShippingInfo req) { ShippingInfo byId = shippingInfoService.getById(req.getId()); if (byId == null) { return AjaxResult.error("发货信息不存在"); } boolean update = shippingInfoService.updateById(req); return update ? AjaxResult.success() : AjaxResult.error(); } @DeleteMapping("/delete") @Operation(summary = "删除发货信息") @Transactional(rollbackFor = Exception.class) @Log(title = "发货信息管理", businessType = BusinessType.DELETE) public AjaxResult delete(@RequestBody List ids) { return shippingInfoService.delete(ids) ? AjaxResult.success("删除成功") : AjaxResult.error("删除失败"); } /** * 导出发货信息管理 */ @PostMapping("/export") @Operation(summary = "导出发货信息") public void export(HttpServletResponse response) { List list = shippingInfoMapper.listAll(); ExcelUtil util = new ExcelUtil(ShippingInfo.class); util.exportExcel(response, list, "发货信息"); } @GetMapping("/getByCustomerName") @Operation(summary = "通过客户名称查询") public AjaxResult getByCustomerName(String customerName) { return AjaxResult.success(shippingInfoService.getShippingInfoByCustomerName(customerName)); } @GetMapping("/getDateil/{id}") public R getDateil(@PathVariable("id") Long id) { return R.ok(shippingInfoService.getDetail(id)); } }