package com.ruoyi.sales.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.enums.FileNameType; 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.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.other.service.impl.TempFileServiceImpl; import com.ruoyi.sales.mapper.ShipmentApprovalMapper; import com.ruoyi.sales.mapper.ShippingInfoMapper; import com.ruoyi.sales.pojo.SalesLedger; import com.ruoyi.sales.pojo.SalesLedgerProduct; import com.ruoyi.sales.pojo.ShipmentApproval; import com.ruoyi.sales.pojo.ShippingInfo; import com.ruoyi.sales.service.ISalesLedgerProductService; import com.ruoyi.sales.service.ISalesLedgerService; import com.ruoyi.sales.service.ShippingInfoService; import com.ruoyi.sales.service.impl.CommonFileServiceImpl; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; /** * @author :yys * @date : 2025/10/22 9:34 */ @RestController @RequestMapping("/shippingInfo") @Api(tags = "发货信息管理") public class ShippingInfoController extends BaseController { @Autowired private ShippingInfoService shippingInfoService; @Autowired private ShipmentApprovalMapper shipmentApprovalMapper; @Autowired private ISalesLedgerProductService salesLedgerProductService; @Autowired private TempFileServiceImpl tempFileService; @Autowired private CommonFileServiceImpl commonFileService; @GetMapping("/listPage") @ApiOperation("发货信息列表") public AjaxResult listPage(Page page, ShippingInfo req) { IPage listPage = shippingInfoService.listPage(page,req); return AjaxResult.success(listPage); } @PostMapping("/add") @ApiOperation("添加发货信息") @Transactional(rollbackFor = Exception.class) public AjaxResult add(@RequestBody ShippingInfo req) throws IOException { boolean save = shippingInfoService.save(req); // 迁移文件 if(CollectionUtils.isNotEmpty(req.getTempFileIds())){ tempFileService.migrateTempFilesToFormal(req.getId(), req.getTempFileIds(), FileNameType.SHIP.getValue()); } return save ? AjaxResult.success() : AjaxResult.error(); } @PostMapping("/update") @ApiOperation("修改发货信息") @Transactional(rollbackFor = Exception.class) public AjaxResult update(@RequestBody ShippingInfo req) throws IOException { ShippingInfo byId = shippingInfoService.getById(req.getId()); if (byId == null) { return AjaxResult.error("发货信息不存在"); } boolean update = shippingInfoService.updateById(req); if(CollectionUtils.isNotEmpty(req.getTempFileIds())){ tempFileService.migrateTempFilesToFormal(req.getId(), req.getTempFileIds(), FileNameType.SHIP.getValue()); } return update ? AjaxResult.success() : AjaxResult.error(); } @DeleteMapping("/delete") @ApiOperation("删除发货信息") @Transactional(rollbackFor = Exception.class) public AjaxResult delete(@RequestBody List ids) { if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("请选择要删除的记录"); boolean delete = shippingInfoService.removeBatchByIds(ids); // 删除附件 commonFileService.deleteByBusinessIds(ids, FileNameType.SHIP.getValue()); return delete ? AjaxResult.success("删除成功") : AjaxResult.error("删除失败"); } @Autowired private ShippingInfoMapper shippingInfoMapper; /** * 导出发货信息管理 */ @PostMapping("/export") @ApiOperation("导出发货信息") public void export(HttpServletResponse response) { List list = shippingInfoMapper.listAll(); ExcelUtil util = new ExcelUtil(ShippingInfo.class); util.exportExcel(response, list, "发货信息"); } }