StockControl.java 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399
  1. package com.ruoyi.web.controller.anpin;
  2. import cn.hutool.core.date.DateTime;
  3. import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  4. import com.ruoyi.anpin.*;
  5. import com.ruoyi.common.annotation.Log;
  6. import com.ruoyi.common.annotation.RepeatSubmit;
  7. import com.ruoyi.common.core.controller.BaseController;
  8. import com.ruoyi.common.core.domain.AjaxResult;
  9. import com.ruoyi.common.core.domain.model.LoginUser;
  10. import com.ruoyi.common.core.page.TableDataInfo;
  11. import com.ruoyi.common.enums.BusinessType;
  12. import com.ruoyi.common.utils.DateUtils;
  13. import com.ruoyi.common.utils.ServletUtils;
  14. import com.ruoyi.common.utils.StringUtils;
  15. import com.ruoyi.common.utils.poi.ExcelUtil;
  16. import com.ruoyi.common.utils.spring.SpringUtils;
  17. import com.ruoyi.framework.web.service.TokenService;
  18. import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
  19. import com.ruoyi.warehouseBusiness.domain.TWarehousebillsfees;
  20. import com.ruoyi.warehouseBusiness.service.ITWarehouseBillsService;
  21. import com.ruoyi.warehouseBusiness.service.ITWarehousebillsfeesService;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.security.access.prepost.PreAuthorize;
  24. import org.springframework.web.bind.annotation.*;
  25. import java.text.ParseException;
  26. import java.text.SimpleDateFormat;
  27. import java.util.ArrayList;
  28. import java.util.Date;
  29. import java.util.List;
  30. /**
  31. * @Author ZhaoQian La
  32. * @Date 2021/5/19 13:37
  33. * @Version 1.0
  34. */
  35. /**
  36. * 仓库管理
  37. */
  38. @RestController
  39. @RequestMapping("/anpin/stockControl")
  40. public class StockControl extends BaseController {
  41. @Autowired
  42. private ITWarehouseBillsService tWarehousebillsService;
  43. @Autowired
  44. private ITWarehousebillsfeesService itWarehousebillsfeesService;
  45. /**
  46. * 查询仓库主(出入库)列表
  47. */
  48. @PreAuthorize("@ss.hasPermi('anpin:stockControl:list')")
  49. @GetMapping("/list")
  50. public TableDataInfo list(TWarehouseBills tWarehousebills) {
  51. startPage();
  52. List<TWarehouseBills> list = tWarehousebillsService.selectAnPinList(tWarehousebills);
  53. return getDataTable(list);
  54. }
  55. /**
  56. * 导出仓库主(出入库)列表
  57. */
  58. @PreAuthorize("@ss.hasPermi('anpin:stockControl:export')")
  59. @Log(title = "仓库主(出入库)", businessType = BusinessType.EXPORT)
  60. @GetMapping("/export")
  61. public AjaxResult export(TWarehouseBills tWarehousebills)
  62. {
  63. List<TWarehouseBills> list = tWarehousebillsService.selectTWarehousebillsList(tWarehousebills);
  64. ExcelUtil<TWarehouseBills> util = new ExcelUtil<TWarehouseBills>(TWarehouseBills.class);
  65. String sheetName = null;
  66. if (StringUtils.isNotEmpty(tWarehousebills.getfBusinessType()) && tWarehousebills.getfBusinessType().equals("SQ")){
  67. sheetName = "采购申请";
  68. }else if (StringUtils.isNotEmpty(tWarehousebills.getfBusinessType()) && tWarehousebills.getfBusinessType().equals("SQ")){
  69. sheetName = "仓库入库";
  70. }else if (StringUtils.isNotEmpty(tWarehousebills.getfBusinessType()) && tWarehousebills.getfBusinessType().equals("SQ")){
  71. sheetName = "仓库出库";
  72. }else if (StringUtils.isNotEmpty(tWarehousebills.getfBusinessType()) && tWarehousebills.getfBusinessType().equals("SQ")){
  73. sheetName = "销售出库";
  74. }
  75. return util.exportExcel(list, "warehousebills");
  76. }
  77. /**
  78. * 导出仓库从(出入库)列表
  79. */
  80. @PreAuthorize("@ss.hasPermi('anpin:stockControl:export')")
  81. @Log(title = "仓库主(出入库)", businessType = BusinessType.EXPORT)
  82. @GetMapping("/tFee/export")
  83. public AjaxResult tFeeExport(TWarehousebillsfees tWarehousebillsfees)
  84. {
  85. List<TWarehousebillsfees> list = itWarehousebillsfeesService.selectTWarehousebillsfeesList(tWarehousebillsfees);
  86. ExcelUtil<TWarehousebillsfees> util = new ExcelUtil<TWarehousebillsfees>(TWarehousebillsfees.class);
  87. String sheetName = null;
  88. if (StringUtils.isNotEmpty(tWarehousebillsfees.getfBusinessType()) && tWarehousebillsfees.getfBusinessType().equals("SQ")){
  89. sheetName = "采购申请";
  90. }else if (StringUtils.isNotEmpty(tWarehousebillsfees.getfBusinessType()) && tWarehousebillsfees.getfBusinessType().equals("SQ")){
  91. sheetName = "仓库入库";
  92. }else if (StringUtils.isNotEmpty(tWarehousebillsfees.getfBusinessType()) && tWarehousebillsfees.getfBusinessType().equals("SQ")){
  93. sheetName = "仓库出库";
  94. }else if (StringUtils.isNotEmpty(tWarehousebillsfees.getfBusinessType()) && tWarehousebillsfees.getfBusinessType().equals("SQ")){
  95. sheetName = "销售出库";
  96. }
  97. return util.exportExcel(list, "warehousebills");
  98. }
  99. /**
  100. * 获取仓库主(出入库)详细信息
  101. */
  102. @PreAuthorize("@ss.hasPermi('anpin:stockControl:query')")
  103. @GetMapping(value = "/{fId}")
  104. public AjaxResult getInfo(@PathVariable("fId") Long fId) {
  105. return AjaxResult.success(tWarehousebillsService.selectAnPinById(fId));
  106. }
  107. /**
  108. * 采购申请 SQ 付,仓库入库 RK 收,仓库出库 CK 付,销售出库 XS 收
  109. *保存接口
  110. * @param tWarehousebills
  111. * @param tWarehousebillsfees
  112. * @return暂存接口
  113. */
  114. @PreAuthorize("@ss.hasPermi('anpin:stockControl:anPingApply')")
  115. @Log(title = "仓库信息暂存", businessType = BusinessType.DELETE)
  116. @PostMapping("/anPingApply")
  117. public AjaxResult anPingApply(@RequestParam(value = "tWarehousebills") String tWarehousebills,
  118. @RequestParam("tWarehousebillsfees") String tWarehousebillsfees,
  119. @RequestParam("fBilltype") String fBilltype) {
  120. if (StringUtils.isEmpty(tWarehousebills) || "{}".equals(tWarehousebills)) {
  121. return AjaxResult.error("未找到订单主表信息,请确认");
  122. }
  123. if (StringUtils.isEmpty(tWarehousebillsfees)|| "[]".equals(tWarehousebillsfees)) {
  124. return AjaxResult.error("未找到订单明细表信息,请确认");
  125. }
  126. if (StringUtils.isEmpty(fBilltype)) {
  127. return AjaxResult.error("操作类型不能为空");
  128. }
  129. LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
  130. return tWarehousebillsService.anPingApply(tWarehousebills, tWarehousebillsfees, loginUser, fBilltype);
  131. }
  132. /**
  133. * 采购申请 SQ 付,仓库入库 RK 收,仓库出库 CK 付,销售出库 XS 收
  134. *提交审核接口
  135. * @param tWarehousebills
  136. * @param tWarehousebillsfees
  137. * @return提交审核
  138. */
  139. @PreAuthorize("@ss.hasPermi('anpin:stockControl:anPinSubmit')")
  140. @Log(title = "仓库信息提交", businessType = BusinessType.DELETE)
  141. @PostMapping("/anPinSubmit")
  142. public AjaxResult anPinSubmit(@RequestParam(value = "tWarehousebills") String tWarehousebills,
  143. @RequestParam("tWarehousebillsfees") String tWarehousebillsfees,
  144. @RequestParam("fBilltype") String fBilltype) {
  145. if (StringUtils.isEmpty(tWarehousebills) || "{}".equals(tWarehousebills)) {
  146. return AjaxResult.error("未找到订单主表信息,请确认");
  147. }
  148. if (StringUtils.isEmpty(tWarehousebillsfees)|| "[]".equals(tWarehousebillsfees)) {
  149. return AjaxResult.error("未找到订单明细表信息,请确认");
  150. }
  151. if (StringUtils.isEmpty(fBilltype)) {
  152. return AjaxResult.error("操作类型不能为空");
  153. }
  154. LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
  155. return tWarehousebillsService.anPinSubmit(tWarehousebills, tWarehousebillsfees, loginUser, fBilltype);
  156. }
  157. /**生成入库单,出库单,销售出库单
  158. * 采购申请 CGSQ 付,仓库入库 CKRK 收,仓库出库 CKCK 付,销售出库 XSCK 收
  159. *提交审核接口
  160. * @param tWarehouseBills
  161. * @return提交审核
  162. */
  163. @PreAuthorize("@ss.hasPermi('anpin:stockControl:generateReceipts')")
  164. @Log(title = "仓库信息提交", businessType = BusinessType.DELETE)
  165. @PostMapping("/generateReceipts")
  166. public AjaxResult generateReceipts(@RequestBody TWarehouseBills tWarehouseBills) {
  167. if (StringUtils.isEmpty(tWarehouseBills.getfBilltype())) {
  168. return AjaxResult.error("生成单类型不能为空");
  169. }
  170. if (tWarehouseBills.getfId() == null) {
  171. return AjaxResult.error("生成单来源数据不能为空");
  172. }
  173. LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
  174. return tWarehousebillsService.generateReceipts(tWarehouseBills,loginUser);
  175. }
  176. /**
  177. * 删除仓库主(出入库)
  178. */
  179. @PreAuthorize("@ss.hasPermi('anpin:stockControl:remove')")
  180. @Log(title = "仓库主(出入库)", businessType = BusinessType.DELETE)
  181. @DeleteMapping("/remove/{fIds}")
  182. public AjaxResult remove(@PathVariable Long[] fIds) {
  183. LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
  184. return toAjax(tWarehousebillsService.anPinDeleteUpdate(fIds,loginUser));
  185. }
  186. /**
  187. * 删除仓库主(出入库)
  188. */
  189. @PreAuthorize("@ss.hasPermi('anpin:stockControl:remove')")
  190. @Log(title = "仓库主(出入库)", businessType = BusinessType.DELETE)
  191. @DeleteMapping("/{fIds}")
  192. public AjaxResult removeById(@PathVariable Long fIds) {
  193. return tWarehousebillsService.removeById(fIds);
  194. }
  195. /**
  196. * 判断能否修改或者删除数据
  197. */
  198. @PreAuthorize("@ss.hasPermi('anpin:stockControl:remove')")
  199. @PostMapping("/judge")
  200. public AjaxResult judge(@RequestBody TWarehouseBills tWarehouseBills){
  201. return tWarehousebillsService.judge(tWarehouseBills);
  202. }
  203. /**
  204. * 删除仓库从(出入库)
  205. */
  206. @PreAuthorize("@ss.hasPermi('anpin:stockControl:remove')")
  207. @Log(title = "仓库从(出入库)", businessType = BusinessType.DELETE)
  208. @DeleteMapping("/removeFee/{fIds}")
  209. public AjaxResult removeFee(@PathVariable Long[] fIds) {
  210. LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
  211. return toAjax(tWarehousebillsService.anPinDeleteFeeUpdate(fIds,loginUser));
  212. }
  213. /**
  214. * 撤销入库信息
  215. */
  216. @PreAuthorize("@ss.hasPermi('anpin:stockControl:revoke')")
  217. @Log(title = "详情主表", businessType = BusinessType.UPDATE)
  218. @PostMapping("/withdrawById")
  219. @RepeatSubmit
  220. public AjaxResult withdrawById(@RequestBody TWarehouseBills tWarehouseBills) {
  221. // 查询是否对账、收费、付费
  222. if (tWarehouseBills.getfId() == null){
  223. return AjaxResult.error("数据不能为空");
  224. }
  225. String billsType = null;
  226. if (StringUtils.isNotEmpty(tWarehouseBills.getfBilltype())&& "RK".equals(tWarehouseBills.getfBilltype())){
  227. billsType = "RKRevoke";
  228. }else if (StringUtils.isNotEmpty(tWarehouseBills.getfBilltype())&& "CK".equals(tWarehouseBills.getfBilltype())){
  229. billsType = "CKRevoke";
  230. }else {
  231. billsType = "SJRKRevoke";
  232. }
  233. // 获取当前的用户
  234. LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
  235. return tWarehousebillsService.revokeAnPinOrder(tWarehouseBills.getfId(), loginUser, billsType);
  236. }
  237. /**
  238. * 出入库统计列表
  239. */
  240. @PreAuthorize("@ss.hasPermi('anpin:stockControl:selectTWarehouseInorOut')")
  241. @GetMapping("/selectTWarehouseInorOut")
  242. public TableDataInfo selectTWarehouseInorOut(TWarehousebillsfees tWarehousebillsfees) {
  243. startPage();
  244. List<WarhousrExcel> list = tWarehousebillsService.selectTWarehouseInorOut(tWarehousebillsfees);
  245. return getDataTable(list);
  246. }
  247. /**
  248. * 导出出入库统计列表
  249. */
  250. @PreAuthorize("@ss.hasPermi('anpin:stockControl:tWarehouseInorOutExcePorrt')")
  251. @Log(title = "导出出入库统计表", businessType = BusinessType.EXPORT)
  252. @GetMapping("/tWarehouseInorOutExcePorrt/export")
  253. public AjaxResult tWarehouseInorOutExcePorrt(TWarehousebillsfees tWarehousebillsfees)
  254. {
  255. List<WarhousrExcel> list = tWarehousebillsService.selectTWarehouseInorOut(tWarehousebillsfees);
  256. ExcelUtil<WarhousrExcel> util = new ExcelUtil<WarhousrExcel>(WarhousrExcel.class);
  257. return util.exportExcel(list, "出入库统计表");
  258. }
  259. /**
  260. * 销售出库统计列表
  261. */
  262. @PreAuthorize("@ss.hasPermi('anpin:stockControl:salesOfOutbound')")
  263. @GetMapping("/salesOfOutbound")
  264. public TableDataInfo salesOfOutbound(TWarehouseBills tWarehouseBills) {
  265. startPage();
  266. List<SalesOfOutbound> list = tWarehousebillsService.salesOfOutbound(tWarehouseBills);
  267. return getDataTable(list);
  268. }
  269. /**
  270. * 导出销售出库统计列表
  271. */
  272. @PreAuthorize("@ss.hasPermi('anpin:stockControl:salesOfOutboundExcePorrt')")
  273. @Log(title = "导出销售出库统计表", businessType = BusinessType.EXPORT)
  274. @GetMapping("/salesOfOutboundExcePorrt/export")
  275. public AjaxResult salesOfOutboundExcePorrt(TWarehouseBills tWarehouseBills)
  276. {
  277. List<SalesOfOutbound> list = tWarehousebillsService.salesOfOutbound(tWarehouseBills);
  278. ExcelUtil<SalesOfOutbound> util = new ExcelUtil<SalesOfOutbound>(SalesOfOutbound.class);
  279. return util.exportExcel(list, "销售出库统计表");
  280. }
  281. /**
  282. * 利润统计列表
  283. */
  284. @PreAuthorize("@ss.hasPermi('anpin:stockControl:salectAnpinProfit')")
  285. @GetMapping("/salectAnpinProfit")
  286. public TableDataInfo salectAnpinProfit(TWarehouseBills tWarehouseBills) {
  287. startPage();
  288. List<ProfitExcel> list = tWarehousebillsService.salectAnpinProfit(tWarehouseBills);
  289. return getDataTable(list);
  290. }
  291. /**
  292. * 导出利润统计列表
  293. */
  294. @PreAuthorize("@ss.hasPermi('anpin:stockControl:salectAnpinProfitExcePorrt')")
  295. @Log(title = "导出利润统计表", businessType = BusinessType.EXPORT)
  296. @GetMapping("/salectAnpinProfit/export")
  297. public AjaxResult salectAnpinProfitExcePorrt(TWarehouseBills tWarehouseBills)
  298. {
  299. List<ProfitExcel> list = tWarehousebillsService.salectAnpinProfit(tWarehouseBills);
  300. ExcelUtil<ProfitExcel> util = new ExcelUtil<ProfitExcel>(ProfitExcel.class);
  301. return util.exportExcel(list, "利润统计表");
  302. }
  303. /**
  304. * 库存总账
  305. */
  306. @PreAuthorize("@ss.hasPermi('anpin:stockControl:selectInventoryLedger')")
  307. @GetMapping("/selectInventoryLedger")
  308. public TableDataInfo selectInventoryLedger(TWarehouseBills tWarehouseBills) {
  309. startPage();
  310. List<InventoryLedgerExcel> list = new ArrayList<>();
  311. if (CollectionUtils.isEmpty(tWarehouseBills.gettimeInterval()) || "[]".equals(tWarehouseBills.gettimeInterval())){
  312. return getDataTable(list);
  313. }
  314. list = tWarehousebillsService.selectInventoryLedger(tWarehouseBills);
  315. return getDataTable(list);
  316. }
  317. /**
  318. * 库存总账
  319. */
  320. @PreAuthorize("@ss.hasPermi('anpin:stockControl:selectInventoryLedgerExcePorrt')")
  321. @Log(title = "导出库存总账统计表", businessType = BusinessType.EXPORT)
  322. @GetMapping("/selectInventoryLedger/export")
  323. public AjaxResult selectInventoryLedgerExcePorrt(TWarehouseBills tWarehouseBills)
  324. {
  325. List<InventoryLedgerExcel> list = new ArrayList<>();
  326. if (CollectionUtils.isNotEmpty(tWarehouseBills.gettimeInterval()) || !"[]".equals(tWarehouseBills.gettimeInterval())) {
  327. list = tWarehousebillsService.selectInventoryLedger(tWarehouseBills);
  328. }
  329. ExcelUtil<InventoryLedgerExcel> util = new ExcelUtil<InventoryLedgerExcel>(InventoryLedgerExcel.class);
  330. return util.exportExcel(list, "库存总账统计表");
  331. }
  332. @Log(title = "打印日志记录", businessType = BusinessType.DELETE)
  333. @PostMapping("/updetePrintLog")
  334. public AjaxResult updetePrintLog(@RequestBody TWarehouseBills tWarehouseBills) {
  335. if (tWarehouseBills.getfId() == null) {
  336. return AjaxResult.error("参数不能为空");
  337. }
  338. LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
  339. return tWarehousebillsService.updetePrintLog(tWarehouseBills,loginUser);
  340. }
  341. /**
  342. * 查询费用信息
  343. */
  344. @PreAuthorize("@ss.hasPermi('anpin:stockControl:selectFeeMessage')")
  345. @GetMapping("/selectFeeMessage")
  346. public TableDataInfo selectFeeMessage(TWarehouseBills tWarehouseBills) {
  347. startPage();
  348. if (StringUtils.isEmpty(tWarehouseBills.getAnnual()) || "null".equals(tWarehouseBills.getAnnual())){
  349. TableDataInfo tableDataInfo = new TableDataInfo();
  350. tableDataInfo.setCode(500);
  351. tableDataInfo.setMsg("请选择查询年份");
  352. return tableDataInfo;
  353. }
  354. if (StringUtils.isEmpty(tWarehouseBills.getfBilltype()) || "null".equals(tWarehouseBills.getfBilltype())){
  355. TableDataInfo tableDataInfo = new TableDataInfo();
  356. tableDataInfo.setCode(500);
  357. tableDataInfo.setMsg("请选择查询类型");
  358. return tableDataInfo;
  359. }
  360. List<AnPingOrderMessage> list = tWarehousebillsService.selectFeeMessage(tWarehouseBills);
  361. return getDataTable(list);
  362. }
  363. /**
  364. * 采购申请统计列表
  365. */
  366. @PreAuthorize("@ss.hasPermi('anpin:stockControl:purchaseRequest')")
  367. @GetMapping("/purchaseRequest")
  368. public TableDataInfo purchaseRequest (TWarehouseBills tWarehouseBills) {
  369. startPage();
  370. List<PurchaseRequestExcel> list = tWarehousebillsService.purchaseRequest(tWarehouseBills);
  371. return getDataTable(list);
  372. }
  373. /**
  374. * 导出采购申请统计列表
  375. */
  376. @PreAuthorize("@ss.hasPermi('anpin:stockControl:purchaseRequestExPorrt')")
  377. @Log(title = "导出采购申请统计表", businessType = BusinessType.EXPORT)
  378. @GetMapping("/purchaseRequest/export")
  379. public AjaxResult purchaseRequestExPort(TWarehouseBills tWarehouseBills)
  380. {
  381. List<PurchaseRequestExcel> list = tWarehousebillsService.purchaseRequest(tWarehouseBills);
  382. ExcelUtil<PurchaseRequestExcel> util = new ExcelUtil<PurchaseRequestExcel>(PurchaseRequestExcel.class);
  383. return util.exportExcel(list, "采购申请统计表");
  384. }
  385. }