MesWarehouseInController.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480
  1. package com.jeesite.modules.mes.web;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.Map;
  5. import javax.annotation.Resource;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import com.alibaba.fastjson.JSON;
  9. import com.jeesite.common.collect.ListUtils;
  10. import com.jeesite.common.collect.MapUtils;
  11. import com.jeesite.common.lang.DateUtils;
  12. import com.jeesite.common.lang.StringUtils;
  13. import com.jeesite.common.utils.excel.ExcelExport;
  14. import com.jeesite.modules.file.entity.FileUpload;
  15. import com.jeesite.modules.file.service.FileUploadService;
  16. import com.jeesite.modules.mes.dao.MesWarehouseInItemsDao;
  17. import com.jeesite.modules.mes.entity.*;
  18. import com.jeesite.modules.mes.resp.CommonResp;
  19. import com.jeesite.modules.mes.resp.DictDataResp;
  20. import com.jeesite.modules.mes.resp.MesWarehouseResp;
  21. import com.jeesite.modules.mes.service.MesApplyService;
  22. import com.jeesite.modules.mes.service.MesIpqcService;
  23. import com.jeesite.modules.mes.service.MesWarehouseInItemsService;
  24. import com.jeesite.modules.mes.util.CopyUtil;
  25. import com.jeesite.modules.sys.entity.DictData;
  26. import com.jeesite.modules.sys.utils.DictUtils;
  27. import org.apache.shiro.authz.annotation.RequiresPermissions;
  28. import org.checkerframework.checker.units.qual.A;
  29. import org.springframework.beans.factory.annotation.Autowired;
  30. import org.springframework.stereotype.Controller;
  31. import org.springframework.ui.Model;
  32. import org.springframework.validation.annotation.Validated;
  33. import org.springframework.web.bind.annotation.ModelAttribute;
  34. import org.springframework.web.bind.annotation.PostMapping;
  35. import org.springframework.web.bind.annotation.RequestMapping;
  36. import org.springframework.web.bind.annotation.ResponseBody;
  37. import com.jeesite.common.config.Global;
  38. import com.jeesite.common.entity.Page;
  39. import com.alibaba.fastjson.JSONValidator;
  40. import com.jeesite.common.codec.EncodeUtils;
  41. import com.jeesite.common.web.BaseController;
  42. import com.jeesite.modules.mes.service.MesWarehouseInService;
  43. /**
  44. * 入库单Controller
  45. * @author hzd
  46. * @version 2023-06-26
  47. */
  48. @Controller
  49. @RequestMapping(value = "${adminPath}/mes/mesWarehouseIn")
  50. public class MesWarehouseInController extends BaseController {
  51. @Autowired
  52. private MesWarehouseInService mesWarehouseInService;
  53. @Autowired
  54. private MesApplyService mesApplyService;
  55. @Resource
  56. private FileUploadService fileUploadService;
  57. @Autowired
  58. private MesWarehouseInItemsService mesWarehouseInItemsService;
  59. @Autowired
  60. private MesIpqcService mesIpqcService;
  61. /**
  62. * 获取数据
  63. */
  64. @ModelAttribute
  65. public MesWarehouseIn get(String id, boolean isNewRecord) {
  66. return mesWarehouseInService.get(id, isNewRecord);
  67. }
  68. /**
  69. * 查询列表
  70. */
  71. @RequiresPermissions("mes:mesWarehouseIn:view")
  72. @RequestMapping(value = {"list", ""})
  73. public String list(MesWarehouseIn mesWarehouseIn, Model model) {
  74. model.addAttribute("mesWarehouseIn", mesWarehouseIn);
  75. return "modules/mes/mesWarehouseInList";
  76. }
  77. /**
  78. * 查询列表数据
  79. */
  80. @RequiresPermissions("mes:mesWarehouseIn:view")
  81. @RequestMapping(value = "listData")
  82. @ResponseBody
  83. public Page<MesWarehouseIn> listData(MesWarehouseIn mesWarehouseIn, HttpServletRequest request, HttpServletResponse response) {
  84. mesWarehouseIn.setPage(new Page<>(request, response));
  85. Page<MesWarehouseIn> page = mesWarehouseInService.findPage(mesWarehouseIn);
  86. return page;
  87. }
  88. @RequiresPermissions("mes:mesWarehouseIn:view")
  89. @RequestMapping(value = {"items", ""})
  90. public String items(MesWarehouseInItems mesWarehouseInItems, Model model) {
  91. model.addAttribute("mesWarehouseInItems", mesWarehouseInItems);
  92. return "modules/mes/mesWarehouseInItems";
  93. }
  94. /**
  95. * 查询子表数据
  96. */
  97. @RequiresPermissions("mes:mesWarehouseIn:view")
  98. @RequestMapping(value = "mesWarehouseInItemsListData")
  99. @ResponseBody
  100. public Page<MesWarehouseInItems> subListData(MesWarehouseInItems mesWarehouseInItems, HttpServletRequest request, HttpServletResponse response) {
  101. mesWarehouseInItems.setPage(new Page<>(request, response));
  102. Page<MesWarehouseInItems> page = mesWarehouseInService.findSubPage(mesWarehouseInItems);
  103. return page;
  104. }
  105. /**
  106. * 查看编辑表单
  107. */
  108. @RequiresPermissions("mes:mesWarehouseIn:view")
  109. @RequestMapping(value = "form")
  110. public String form(MesWarehouseIn mesWarehouseIn, Model model) {
  111. mesWarehouseIn.setFrom("0");
  112. model.addAttribute("mesWarehouseIn", mesWarehouseIn);
  113. return "modules/mes/mesWarehouseInForm";
  114. }
  115. @RequiresPermissions("mes:mesWarehouseIn:view")
  116. @RequestMapping(value = "form2")
  117. public String form2(MesWarehouseIn mesWarehouseIn, Model model) {
  118. mesWarehouseIn.setFrom("1");
  119. model.addAttribute("mesWarehouseIn", mesWarehouseIn);
  120. return "modules/mes/mesWarehouseInForm2";
  121. }
  122. @RequiresPermissions("mes:mesWarehouseIn:view")
  123. @RequestMapping(value = "refund")
  124. public String refund(MesWarehouseIn mesWarehouseIn, Model model) {
  125. MesWarehouseRefund mesWarehouseRefund = new MesWarehouseRefund();
  126. mesWarehouseRefund.setFromId(mesWarehouseIn.getFromId());
  127. mesWarehouseRefund.setWarehouseInId(mesWarehouseIn.getId());
  128. List<MesWarehouseRefundItems> list2 = mesWarehouseRefund.getMesWarehouseRefundItemsList();
  129. List<MesWarehouseInItems> list = mesWarehouseIn.getMesWarehouseInItemsList();
  130. for (MesWarehouseInItems mesWarehouseInItems : list){
  131. MesWarehouseRefundItems res = new MesWarehouseRefundItems();
  132. res.setWarehouseId(mesWarehouseInItems.getWarehouseId());
  133. res.setTitle(mesWarehouseInItems.getTitle());
  134. res.setSn(mesWarehouseInItems.getSn());
  135. res.setSpec(mesWarehouseInItems.getSpec());
  136. res.setCount(mesWarehouseInItems.getCount());
  137. list2.add(res);
  138. }
  139. mesWarehouseRefund.setMesWarehouseRefundItemsList(list2);
  140. model.addAttribute("mesWarehouseRefund", mesWarehouseRefund);
  141. return "modules/mes/mesWarehouseInRefund";
  142. }
  143. @RequiresPermissions("mes:mesWarehouseIn:view")
  144. @RequestMapping(value = "deal")
  145. public String deal(MesWarehouseIn mesWarehouseIn, Model model) {
  146. model.addAttribute("mesWarehouseIn", mesWarehouseIn);
  147. List<MesApply> malist = mesApplyService.getApplyData("2",mesWarehouseIn.getId(),1);
  148. String auth = "0";
  149. List<String> titles = new ArrayList<>();
  150. for (MesApply item : malist){
  151. if(item.getState().equals("0") && item.getAuth().equals("1")){
  152. auth = "1";
  153. titles.add(item.getNodeTitle());
  154. }
  155. }
  156. String btnTitle = "";
  157. if(auth.equals("1")){
  158. btnTitle = String.join("-",titles);
  159. }
  160. model.addAttribute("malist", malist);
  161. model.addAttribute("auth", auth);
  162. model.addAttribute("btnTitle", btnTitle);
  163. return "modules/mes/mesWarehouseInDeal";
  164. }
  165. @RequiresPermissions("mes:mesWarehouseIn:view")
  166. @RequestMapping(value = "info")
  167. public String info(MesWarehouseIn mesWarehouseIn, Model model) {
  168. model.addAttribute("mesWarehouseIn", mesWarehouseIn);
  169. // List<MesApply> malist = mesApplyService.getApplyData("2",mesWarehouseIn.getId(),0);
  170. // model.addAttribute("malist", malist);
  171. return "modules/mes/mesWarehouseInInfo";
  172. }
  173. /**
  174. * 保存数据
  175. */
  176. @RequiresPermissions("mes:mesWarehouseIn:edit")
  177. @PostMapping(value = "save")
  178. @ResponseBody
  179. public String save(@Validated MesWarehouseIn mesWarehouseIn) {
  180. if(mesWarehouseIn.getFrom().equals("1")){
  181. mesWarehouseIn.setState("0");
  182. }else{
  183. mesWarehouseIn.setState("1");
  184. }
  185. List<MesWarehouseInItems> list = mesWarehouseIn.getMesWarehouseInItemsList();
  186. if(list.size() == 0){
  187. return renderResult(Global.FALSE, text("请选择物料!"));
  188. }
  189. for (int i = 0; i < list.size(); i++) {
  190. if(list.get(i).getWarehouseId().isEmpty()){
  191. return renderResult(Global.FALSE, text("参数错误!"));
  192. }
  193. if(list.get(i).getCount() <= 0){
  194. return renderResult(Global.FALSE, text("物料数量必须大于0"));
  195. }
  196. }
  197. mesWarehouseInService.save(mesWarehouseIn);
  198. return renderResult(Global.TRUE, text("保存入库单成功!"));
  199. }
  200. @RequiresPermissions("mes:mesWarehouseIn:edit")
  201. @PostMapping(value = "save2")
  202. @ResponseBody
  203. public String save2(@Validated MesWarehouseIn mesWarehouseIn,HttpServletRequest request) {
  204. if(!mesWarehouseIn.getState().equals("0")){
  205. return renderResult(Global.FALSE, text("该记录已处理"));
  206. }
  207. String state = request.getParameter("applyState");
  208. String remark = request.getParameter("applyRemark");
  209. mesWarehouseIn.setRemark("");
  210. if(state.equals("2")){
  211. mesWarehouseIn.setState("2");
  212. }
  213. List<MesApply> malist = mesApplyService.getApplyData("2",mesWarehouseIn.getId(),1);
  214. String auth = "0";
  215. String s = "1";
  216. for (MesApply item : malist){
  217. if(item.getState().equals("0") && item.getAuth().equals("1")){
  218. auth = "1";
  219. item.setRemark(remark);
  220. }
  221. if(item.getState().equals("0")){
  222. s = "0";
  223. }
  224. }
  225. if(auth.equals("0")){
  226. return renderResult(Global.FALSE, text("无权限操作"));
  227. }
  228. if(s.equals("1")){
  229. mesWarehouseIn.setState("1");
  230. }
  231. mesWarehouseInService.deal(mesWarehouseIn,state,remark);
  232. return renderResult(Global.TRUE, text("操作成功!"));
  233. }
  234. /**
  235. * 删除数据
  236. */
  237. @RequiresPermissions("mes:mesWarehouseIn:edit")
  238. @RequestMapping(value = "delete")
  239. @ResponseBody
  240. public String delete(MesWarehouseIn mesWarehouseIn) {
  241. mesWarehouseInService.delete(mesWarehouseIn);
  242. return renderResult(Global.TRUE, text("删除入库单成功!"));
  243. }
  244. /**
  245. * 导出数据
  246. */
  247. @RequiresPermissions("mes:mesWarehouseIn:view")
  248. @RequestMapping(value = "exportData")
  249. public void exportData(MesWarehouseInItems mesWarehouseInItems, HttpServletResponse response) {
  250. List<MesWarehouseInItems> list = mesWarehouseInService.findSubList(mesWarehouseInItems);
  251. String fileName = "物料入库记录" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
  252. try(ExcelExport ee = new ExcelExport("物料入库记录", MesWarehouseInItems.class)){
  253. ee.setDataList(list).write(response, fileName);
  254. }
  255. }
  256. @RequiresPermissions("mes:mesWarehouseIn:api")
  257. @PostMapping(value = "add")
  258. @ResponseBody
  259. public String add(@Validated MesWarehouseIn mesWarehouseIn,HttpServletRequest request) {
  260. mesWarehouseIn.setState("1");
  261. if(mesWarehouseIn.getFrom().equals("1")){ // 让步入库审核
  262. mesWarehouseIn.setState("0");
  263. }
  264. // String items = request.getParameter("items");
  265. // if(items.isEmpty()){
  266. // return renderResult(Global.FALSE, text("请选择物料!"));
  267. // }
  268. List<MesWarehouseInItems> list = mesWarehouseIn.getMesWarehouseInItemsList();
  269. if(list.size() == 0){
  270. return renderResult(Global.FALSE, text("请选择物料!"));
  271. }
  272. for (int i = 0; i < list.size(); i++) {
  273. if(list.get(i).getWarehouseId().isEmpty()){
  274. return renderResult(Global.FALSE, text("参数错误!"));
  275. }
  276. if(list.get(i).getCount() <= 0){
  277. return renderResult(Global.FALSE, text("物料数量必须大于0"));
  278. }
  279. }
  280. mesWarehouseInService.save(mesWarehouseIn);
  281. return renderResult(Global.TRUE, text("操作成功!"));
  282. }
  283. @RequestMapping(value = "types")
  284. @ResponseBody
  285. public CommonResp types() {
  286. List<DictData> list = DictUtils.getDictList("mes_warehouse_type");
  287. // 列表复制
  288. List<DictDataResp> result = CopyUtil.copyList(list, DictDataResp.class);
  289. CommonResp<List<DictDataResp>> resp = new CommonResp<>();
  290. resp.setData(result);
  291. resp.setResult(Global.TRUE);
  292. return resp;
  293. }
  294. @RequiresPermissions("mes:mesWarehouseIn:api")
  295. @RequestMapping(value = "ulist")
  296. @ResponseBody
  297. public CommonResp ulist(MesWarehouseIn mesWarehouseIn, HttpServletRequest request, HttpServletResponse response) {
  298. mesWarehouseIn.setPage(new Page<>(request, response));
  299. Page<MesWarehouseIn> page = mesWarehouseInService.findPage(mesWarehouseIn);
  300. CommonResp<Page> resp = new CommonResp<>();
  301. resp.setData(page);
  302. resp.setResult(Global.TRUE);
  303. return resp;
  304. }
  305. @RequiresPermissions("mes:mesWarehouseIn:api")
  306. @RequestMapping(value = "detail")
  307. @ResponseBody
  308. public CommonResp detail(MesWarehouseIn mesWarehouseIn,HttpServletRequest req) {
  309. String host = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() + "/js";
  310. Map<String, Object> map = MapUtils.newHashMap();
  311. // logger.info(JSON.toJSONString(mesWarehouseIn));
  312. // List<MesApply> malist = mesApplyService.getApplyData("2",mesWarehouseIn.getId(),0);
  313. // map.put("apply", malist);
  314. // 获取图片
  315. FileUpload fu = new FileUpload();
  316. fu.setBizKey(mesWarehouseIn.getId());
  317. fu.setBizType("mesWarehouseIn_image");
  318. List<FileUpload> imgs = fileUploadService.findList(fu);
  319. List imgList = ListUtils.newArrayList();
  320. if(imgs.size() > 0){
  321. for (FileUpload fi:imgs) {
  322. Map<String, Object> map1 = MapUtils.newHashMap();
  323. map1.put("id",fi.getFileEntity().getFileId());
  324. map1.put("url",host + fi.getFileUrl());
  325. imgList.add(map1);
  326. }
  327. }
  328. map.put("imgs", imgList);
  329. // 获取附件
  330. FileUpload fu2 = new FileUpload();
  331. fu.setBizKey(mesWarehouseIn.getId());
  332. fu.setBizType("mesWarehouseIn_file");
  333. List<FileUpload> imgs2 = fileUploadService.findList(fu2);
  334. List imgList2 = ListUtils.newArrayList();
  335. if(imgs2.size() > 0){
  336. for (FileUpload fi:imgs2) {
  337. Map<String, Object> map2 = MapUtils.newHashMap();
  338. map2.put("id",fi.getFileEntity().getFileId());
  339. map2.put("url",host + fi.getFileUrl());
  340. map2.put("name",host + fi.getFileName());
  341. imgList2.add(map2);
  342. }
  343. }
  344. map.put("files", imgList);
  345. map.put("mesWarehouseIn", mesWarehouseIn);
  346. CommonResp<Map<String, Object>> resp = new CommonResp<>();
  347. resp.setData(map);
  348. resp.setResult(Global.TRUE);
  349. return resp;
  350. }
  351. @RequiresPermissions("mes:mesWarehouseIn:api")
  352. @RequestMapping(value = "applydetail")
  353. @ResponseBody
  354. public CommonResp applydetail(MesWarehouseIn mesWarehouseIn,HttpServletRequest req) {
  355. String host = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() + "/js";
  356. Map<String, Object> map = MapUtils.newHashMap();
  357. // 获取图片
  358. FileUpload fu = new FileUpload();
  359. fu.setBizKey(mesWarehouseIn.getId());
  360. fu.setBizType("mesWarehouseIn_image");
  361. List<FileUpload> imgs = fileUploadService.findList(fu);
  362. List imgList = ListUtils.newArrayList();
  363. if(imgs.size() > 0){
  364. for (FileUpload fi:imgs) {
  365. Map<String, Object> map1 = MapUtils.newHashMap();
  366. map1.put("id",fi.getFileEntity().getFileId());
  367. map1.put("url",host + fi.getFileUrl());
  368. imgList.add(map1);
  369. }
  370. }
  371. map.put("imgs", imgList);
  372. // 获取附件
  373. FileUpload fu2 = new FileUpload();
  374. fu.setBizKey(mesWarehouseIn.getId());
  375. fu.setBizType("mesWarehouseIn_file");
  376. List<FileUpload> imgs2 = fileUploadService.findList(fu2);
  377. List imgList2 = ListUtils.newArrayList();
  378. if(imgs2.size() > 0){
  379. for (FileUpload fi:imgs2) {
  380. Map<String, Object> map2 = MapUtils.newHashMap();
  381. map2.put("id",fi.getFileEntity().getFileId());
  382. map2.put("url",host + fi.getFileUrl());
  383. map2.put("name",host + fi.getFileName());
  384. imgList2.add(map2);
  385. }
  386. }
  387. map.put("files", imgList);
  388. map.put("mesWarehouseIn", mesWarehouseIn);
  389. List<MesApply> malist = mesApplyService.getApplyData("2",mesWarehouseIn.getId(),1);
  390. String auth = "0";
  391. List<String> titles = new ArrayList<>();
  392. for (MesApply item : malist){
  393. if(item.getState().equals("0") && item.getAuth().equals("1")){
  394. auth = "1";
  395. titles.add(item.getNodeTitle());
  396. }
  397. }
  398. String btnTitle = "";
  399. if(auth.equals("1")){
  400. btnTitle = String.join("-",titles);
  401. }
  402. map.put("malist", malist);
  403. map.put("auth", auth);
  404. map.put("btnTitle", btnTitle);
  405. CommonResp<Map<String, Object>> resp = new CommonResp<>();
  406. resp.setData(map);
  407. resp.setResult(Global.TRUE);
  408. return resp;
  409. }
  410. }