package com.ruoyi.web.controller.anpin; import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.ruoyi.anpin.*; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.warehouseBusiness.domain.TWarehouseBills; import com.ruoyi.warehouseBusiness.domain.TWarehousebillsfees; import com.ruoyi.warehouseBusiness.service.ITWarehouseBillsService; import com.ruoyi.warehouseBusiness.service.ITWarehousebillsfeesService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * @Author ZhaoQian La * @Date 2021/5/19 13:37 * @Version 1.0 */ /** * 仓库管理 */ @RestController @RequestMapping("/anpin/stockControl") public class StockControl extends BaseController { @Autowired private ITWarehouseBillsService tWarehousebillsService; @Autowired private ITWarehousebillsfeesService itWarehousebillsfeesService; /** * 查询仓库主(出入库)列表 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:list')") @GetMapping("/list") public TableDataInfo list(TWarehouseBills tWarehousebills) { startPage(); List list = tWarehousebillsService.selectAnPinList(tWarehousebills); return getDataTable(list); } /** * 导出仓库主(出入库)列表 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:export')") @Log(title = "仓库主(出入库)", businessType = BusinessType.EXPORT) @GetMapping("/export") public AjaxResult export(TWarehouseBills tWarehousebills) { List list = tWarehousebillsService.selectTWarehousebillsList(tWarehousebills); ExcelUtil util = new ExcelUtil(TWarehouseBills.class); String sheetName = null; if (StringUtils.isNotEmpty(tWarehousebills.getfBusinessType()) && tWarehousebills.getfBusinessType().equals("SQ")){ sheetName = "采购申请"; }else if (StringUtils.isNotEmpty(tWarehousebills.getfBusinessType()) && tWarehousebills.getfBusinessType().equals("SQ")){ sheetName = "仓库入库"; }else if (StringUtils.isNotEmpty(tWarehousebills.getfBusinessType()) && tWarehousebills.getfBusinessType().equals("SQ")){ sheetName = "仓库出库"; }else if (StringUtils.isNotEmpty(tWarehousebills.getfBusinessType()) && tWarehousebills.getfBusinessType().equals("SQ")){ sheetName = "销售出库"; } return util.exportExcel(list, "warehousebills"); } /** * 导出仓库从(出入库)列表 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:export')") @Log(title = "仓库主(出入库)", businessType = BusinessType.EXPORT) @GetMapping("/tFee/export") public AjaxResult tFeeExport(TWarehousebillsfees tWarehousebillsfees) { List list = itWarehousebillsfeesService.selectTWarehousebillsfeesList(tWarehousebillsfees); ExcelUtil util = new ExcelUtil(TWarehousebillsfees.class); String sheetName = null; if (StringUtils.isNotEmpty(tWarehousebillsfees.getfBusinessType()) && tWarehousebillsfees.getfBusinessType().equals("SQ")){ sheetName = "采购申请"; }else if (StringUtils.isNotEmpty(tWarehousebillsfees.getfBusinessType()) && tWarehousebillsfees.getfBusinessType().equals("SQ")){ sheetName = "仓库入库"; }else if (StringUtils.isNotEmpty(tWarehousebillsfees.getfBusinessType()) && tWarehousebillsfees.getfBusinessType().equals("SQ")){ sheetName = "仓库出库"; }else if (StringUtils.isNotEmpty(tWarehousebillsfees.getfBusinessType()) && tWarehousebillsfees.getfBusinessType().equals("SQ")){ sheetName = "销售出库"; } return util.exportExcel(list, "warehousebills"); } /** * 获取仓库主(出入库)详细信息 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:query')") @GetMapping(value = "/{fId}") public AjaxResult getInfo(@PathVariable("fId") Long fId) { return AjaxResult.success(tWarehousebillsService.selectAnPinById(fId)); } /** * 采购申请 SQ 付,仓库入库 RK 收,仓库出库 CK 付,销售出库 XS 收 *保存接口 * @param tWarehousebills * @param tWarehousebillsfees * @return暂存接口 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:anPingApply')") @Log(title = "仓库信息暂存", businessType = BusinessType.DELETE) @PostMapping("/anPingApply") public AjaxResult anPingApply(@RequestParam(value = "tWarehousebills") String tWarehousebills, @RequestParam("tWarehousebillsfees") String tWarehousebillsfees, @RequestParam("fBilltype") String fBilltype) { if (StringUtils.isEmpty(tWarehousebills) || "{}".equals(tWarehousebills)) { return AjaxResult.error("未找到订单主表信息,请确认"); } if (StringUtils.isEmpty(tWarehousebillsfees)|| "[]".equals(tWarehousebillsfees)) { return AjaxResult.error("未找到订单明细表信息,请确认"); } if (StringUtils.isEmpty(fBilltype)) { return AjaxResult.error("操作类型不能为空"); } LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest()); return tWarehousebillsService.anPingApply(tWarehousebills, tWarehousebillsfees, loginUser, fBilltype); } /** * 采购申请 SQ 付,仓库入库 RK 收,仓库出库 CK 付,销售出库 XS 收 *提交审核接口 * @param tWarehousebills * @param tWarehousebillsfees * @return提交审核 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:anPinSubmit')") @Log(title = "仓库信息提交", businessType = BusinessType.DELETE) @PostMapping("/anPinSubmit") public AjaxResult anPinSubmit(@RequestParam(value = "tWarehousebills") String tWarehousebills, @RequestParam("tWarehousebillsfees") String tWarehousebillsfees, @RequestParam("fBilltype") String fBilltype) { if (StringUtils.isEmpty(tWarehousebills) || "{}".equals(tWarehousebills)) { return AjaxResult.error("未找到订单主表信息,请确认"); } if (StringUtils.isEmpty(tWarehousebillsfees)|| "[]".equals(tWarehousebillsfees)) { return AjaxResult.error("未找到订单明细表信息,请确认"); } if (StringUtils.isEmpty(fBilltype)) { return AjaxResult.error("操作类型不能为空"); } LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest()); return tWarehousebillsService.anPinSubmit(tWarehousebills, tWarehousebillsfees, loginUser, fBilltype); } /**生成入库单,出库单,销售出库单 * 采购申请 CGSQ 付,仓库入库 CKRK 收,仓库出库 CKCK 付,销售出库 XSCK 收 *提交审核接口 * @param tWarehouseBills * @return提交审核 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:generateReceipts')") @Log(title = "仓库信息提交", businessType = BusinessType.DELETE) @PostMapping("/generateReceipts") public AjaxResult generateReceipts(@RequestBody TWarehouseBills tWarehouseBills) { if (StringUtils.isEmpty(tWarehouseBills.getfBilltype())) { return AjaxResult.error("生成单类型不能为空"); } if (tWarehouseBills.getfId() == null) { return AjaxResult.error("生成单来源数据不能为空"); } LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest()); return tWarehousebillsService.generateReceipts(tWarehouseBills,loginUser); } /** * 删除仓库主(出入库) */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:remove')") @Log(title = "仓库主(出入库)", businessType = BusinessType.DELETE) @DeleteMapping("/remove/{fIds}") public AjaxResult remove(@PathVariable Long[] fIds) { LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest()); return toAjax(tWarehousebillsService.anPinDeleteUpdate(fIds,loginUser)); } /** * 删除仓库主(出入库) */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:remove')") @Log(title = "仓库主(出入库)", businessType = BusinessType.DELETE) @DeleteMapping("/{fIds}") public AjaxResult removeById(@PathVariable Long fIds) { return tWarehousebillsService.removeById(fIds); } /** * 判断能否修改或者删除数据 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:remove')") @PostMapping("/judge") public AjaxResult judge(@RequestBody TWarehouseBills tWarehouseBills){ return tWarehousebillsService.judge(tWarehouseBills); } /** * 删除仓库从(出入库) */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:remove')") @Log(title = "仓库从(出入库)", businessType = BusinessType.DELETE) @DeleteMapping("/removeFee/{fIds}") public AjaxResult removeFee(@PathVariable Long[] fIds) { LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest()); return toAjax(tWarehousebillsService.anPinDeleteFeeUpdate(fIds,loginUser)); } /** * 撤销入库信息 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:revoke')") @Log(title = "详情主表", businessType = BusinessType.UPDATE) @PostMapping("/withdrawById") @RepeatSubmit public AjaxResult withdrawById(@RequestBody TWarehouseBills tWarehouseBills) { // 查询是否对账、收费、付费 if (tWarehouseBills.getfId() == null){ return AjaxResult.error("数据不能为空"); } String billsType = null; if (StringUtils.isNotEmpty(tWarehouseBills.getfBilltype())&& "RK".equals(tWarehouseBills.getfBilltype())){ billsType = "RKRevoke"; }else if (StringUtils.isNotEmpty(tWarehouseBills.getfBilltype())&& "CK".equals(tWarehouseBills.getfBilltype())){ billsType = "CKRevoke"; }else { billsType = "SJRKRevoke"; } // 获取当前的用户 LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest()); return tWarehousebillsService.revokeAnPinOrder(tWarehouseBills.getfId(), loginUser, billsType); } /** * 出入库统计列表 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:selectTWarehouseInorOut')") @GetMapping("/selectTWarehouseInorOut") public TableDataInfo selectTWarehouseInorOut(TWarehousebillsfees tWarehousebillsfees) { startPage(); List list = tWarehousebillsService.selectTWarehouseInorOut(tWarehousebillsfees); return getDataTable(list); } /** * 导出出入库统计列表 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:tWarehouseInorOutExcePorrt')") @Log(title = "导出出入库统计表", businessType = BusinessType.EXPORT) @GetMapping("/tWarehouseInorOutExcePorrt/export") public AjaxResult tWarehouseInorOutExcePorrt(TWarehousebillsfees tWarehousebillsfees) { List list = tWarehousebillsService.selectTWarehouseInorOut(tWarehousebillsfees); ExcelUtil util = new ExcelUtil(WarhousrExcel.class); return util.exportExcel(list, "出入库统计表"); } /** * 销售出库统计列表 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:salesOfOutbound')") @GetMapping("/salesOfOutbound") public TableDataInfo salesOfOutbound(TWarehouseBills tWarehouseBills) { startPage(); List list = tWarehousebillsService.salesOfOutbound(tWarehouseBills); return getDataTable(list); } /** * 导出销售出库统计列表 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:salesOfOutboundExcePorrt')") @Log(title = "导出销售出库统计表", businessType = BusinessType.EXPORT) @GetMapping("/salesOfOutboundExcePorrt/export") public AjaxResult salesOfOutboundExcePorrt(TWarehouseBills tWarehouseBills) { List list = tWarehousebillsService.salesOfOutbound(tWarehouseBills); ExcelUtil util = new ExcelUtil(SalesOfOutbound.class); return util.exportExcel(list, "销售出库统计表"); } /** * 利润统计列表 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:salectAnpinProfit')") @GetMapping("/salectAnpinProfit") public TableDataInfo salectAnpinProfit(TWarehouseBills tWarehouseBills) { startPage(); List list = tWarehousebillsService.salectAnpinProfit(tWarehouseBills); return getDataTable(list); } /** * 导出利润统计列表 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:salectAnpinProfitExcePorrt')") @Log(title = "导出利润统计表", businessType = BusinessType.EXPORT) @GetMapping("/salectAnpinProfit/export") public AjaxResult salectAnpinProfitExcePorrt(TWarehouseBills tWarehouseBills) { List list = tWarehousebillsService.salectAnpinProfit(tWarehouseBills); ExcelUtil util = new ExcelUtil(ProfitExcel.class); return util.exportExcel(list, "利润统计表"); } /** * 库存总账 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:selectInventoryLedger')") @GetMapping("/selectInventoryLedger") public TableDataInfo selectInventoryLedger(TWarehouseBills tWarehouseBills) { startPage(); List list = new ArrayList<>(); if (CollectionUtils.isEmpty(tWarehouseBills.gettimeInterval()) || "[]".equals(tWarehouseBills.gettimeInterval())){ return getDataTable(list); } list = tWarehousebillsService.selectInventoryLedger(tWarehouseBills); return getDataTable(list); } /** * 库存总账 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:selectInventoryLedgerExcePorrt')") @Log(title = "导出库存总账统计表", businessType = BusinessType.EXPORT) @GetMapping("/selectInventoryLedger/export") public AjaxResult selectInventoryLedgerExcePorrt(TWarehouseBills tWarehouseBills) { List list = new ArrayList<>(); if (CollectionUtils.isNotEmpty(tWarehouseBills.gettimeInterval()) || !"[]".equals(tWarehouseBills.gettimeInterval())) { list = tWarehousebillsService.selectInventoryLedger(tWarehouseBills); } ExcelUtil util = new ExcelUtil(InventoryLedgerExcel.class); return util.exportExcel(list, "库存总账统计表"); } @Log(title = "打印日志记录", businessType = BusinessType.DELETE) @PostMapping("/updetePrintLog") public AjaxResult updetePrintLog(@RequestBody TWarehouseBills tWarehouseBills) { if (tWarehouseBills.getfId() == null) { return AjaxResult.error("参数不能为空"); } LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest()); return tWarehousebillsService.updetePrintLog(tWarehouseBills,loginUser); } /** * 查询费用信息 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:selectFeeMessage')") @GetMapping("/selectFeeMessage") public TableDataInfo selectFeeMessage(TWarehouseBills tWarehouseBills) { startPage(); if (StringUtils.isEmpty(tWarehouseBills.getAnnual()) || "null".equals(tWarehouseBills.getAnnual())){ TableDataInfo tableDataInfo = new TableDataInfo(); tableDataInfo.setCode(500); tableDataInfo.setMsg("请选择查询年份"); return tableDataInfo; } if (StringUtils.isEmpty(tWarehouseBills.getfBilltype()) || "null".equals(tWarehouseBills.getfBilltype())){ TableDataInfo tableDataInfo = new TableDataInfo(); tableDataInfo.setCode(500); tableDataInfo.setMsg("请选择查询类型"); return tableDataInfo; } List list = tWarehousebillsService.selectFeeMessage(tWarehouseBills); return getDataTable(list); } /** * 采购申请统计列表 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:purchaseRequest')") @GetMapping("/purchaseRequest") public TableDataInfo purchaseRequest (TWarehouseBills tWarehouseBills) { startPage(); List list = tWarehousebillsService.purchaseRequest(tWarehouseBills); return getDataTable(list); } /** * 导出采购申请统计列表 */ @PreAuthorize("@ss.hasPermi('anpin:stockControl:purchaseRequestExPorrt')") @Log(title = "导出采购申请统计表", businessType = BusinessType.EXPORT) @GetMapping("/purchaseRequest/export") public AjaxResult purchaseRequestExPort(TWarehouseBills tWarehouseBills) { List list = tWarehousebillsService.purchaseRequest(tWarehouseBills); ExcelUtil util = new ExcelUtil(PurchaseRequestExcel.class); return util.exportExcel(list, "采购申请统计表"); } }