ErpTransferDirectController.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. package com.jeesite.modules.mes.web;
  2. import com.jeesite.common.config.Global;
  3. import com.jeesite.common.entity.Page;
  4. import com.jeesite.common.lang.StringUtils;
  5. import com.jeesite.common.web.BaseController;
  6. import com.jeesite.modules.mes.erp.ErpPrdInStock;
  7. import com.jeesite.modules.mes.erp.ErpPrdInStockService;
  8. import com.jeesite.modules.mes.erp.ErpProductionOrder;
  9. import com.jeesite.modules.mes.erp.ErpProductionOrderService;
  10. import com.jeesite.modules.mes.erp.ErpStockLocOption;
  11. import com.jeesite.modules.mes.erp.ErpStockLocService;
  12. import com.jeesite.modules.mes.erp.ErpStockOption;
  13. import com.jeesite.modules.mes.erp.ErpStockService;
  14. import com.jeesite.modules.mes.erp.ErpTransferDirect;
  15. import com.jeesite.modules.mes.erp.ErpTransferDirectResult;
  16. import com.jeesite.modules.mes.erp.ErpTransferDirectSaveService;
  17. import com.jeesite.modules.mes.erp.ErpTransferDirectService;
  18. import com.jeesite.modules.mes.erp.ErpTransferDirectSubmitRequest;
  19. import com.jeesite.modules.mes.erp.KingdeeErpProperties;
  20. import org.apache.shiro.authz.annotation.RequiresPermissions;
  21. import org.springframework.stereotype.Controller;
  22. import org.springframework.ui.Model;
  23. import org.springframework.web.bind.annotation.GetMapping;
  24. import org.springframework.web.bind.annotation.PostMapping;
  25. import org.springframework.web.bind.annotation.RequestBody;
  26. import org.springframework.web.bind.annotation.RequestMapping;
  27. import org.springframework.web.bind.annotation.ResponseBody;
  28. import javax.servlet.http.HttpServletRequest;
  29. import javax.servlet.http.HttpServletResponse;
  30. import java.util.ArrayList;
  31. import java.util.Collections;
  32. import java.util.HashMap;
  33. import java.util.List;
  34. import java.util.Map;
  35. /**
  36. * ERP 直接调拨单查询与新增。
  37. */
  38. @Controller
  39. @RequestMapping(value = "${adminPath}/mes/erpTransferDirect")
  40. public class ErpTransferDirectController extends BaseController {
  41. private final ErpTransferDirectService erpTransferDirectService;
  42. private final ErpTransferDirectSaveService erpTransferDirectSaveService;
  43. private final ErpProductionOrderService erpProductionOrderService;
  44. private final ErpPrdInStockService erpPrdInStockService;
  45. private final ErpStockService erpStockService;
  46. private final ErpStockLocService erpStockLocService;
  47. private final KingdeeErpProperties erpProperties;
  48. public ErpTransferDirectController(ErpTransferDirectService erpTransferDirectService,
  49. ErpTransferDirectSaveService erpTransferDirectSaveService,
  50. ErpProductionOrderService erpProductionOrderService,
  51. ErpPrdInStockService erpPrdInStockService,
  52. ErpStockService erpStockService,
  53. ErpStockLocService erpStockLocService,
  54. KingdeeErpProperties erpProperties) {
  55. this.erpTransferDirectService = erpTransferDirectService;
  56. this.erpTransferDirectSaveService = erpTransferDirectSaveService;
  57. this.erpProductionOrderService = erpProductionOrderService;
  58. this.erpPrdInStockService = erpPrdInStockService;
  59. this.erpStockService = erpStockService;
  60. this.erpStockLocService = erpStockLocService;
  61. this.erpProperties = erpProperties;
  62. }
  63. @RequiresPermissions("mes:erpTransferDirect:view")
  64. @RequestMapping(value = {"list", ""})
  65. public String list(ErpTransferDirect erpTransferDirect, Model model) {
  66. model.addAttribute("erpTransferDirect", erpTransferDirect);
  67. return "modules/mes/erpTransferDirectList";
  68. }
  69. @RequiresPermissions("mes:erpTransferDirect:view")
  70. @RequestMapping(value = "listData")
  71. @ResponseBody
  72. public Page<ErpTransferDirect> listData(ErpTransferDirect erpTransferDirect,
  73. HttpServletRequest request, HttpServletResponse response) {
  74. Page<ErpTransferDirect> page = new Page<>(request, response);
  75. int pageSize = page.getPageSize() > 0 ? page.getPageSize() : 20;
  76. int pageNo = page.getPageNo() > 0 ? page.getPageNo() : 1;
  77. int startRow = (pageNo - 1) * pageSize;
  78. List<ErpTransferDirect> list = erpTransferDirectService.findPageList(erpTransferDirect, startRow, pageSize);
  79. page.setList(list);
  80. page.setCount(startRow + list.size() + (list.size() == pageSize ? 1 : 0));
  81. return page;
  82. }
  83. @RequiresPermissions("mes:erpTransferDirect:view")
  84. @RequestMapping(value = "detail")
  85. public String detail(ErpTransferDirect erpTransferDirect, Model model) {
  86. model.addAttribute("erpTransferDirect", erpTransferDirect);
  87. return "modules/mes/erpTransferDirectDetail";
  88. }
  89. @RequiresPermissions("mes:erpTransferDirect:view")
  90. @RequestMapping(value = "detailData")
  91. @ResponseBody
  92. public Page<ErpTransferDirect> detailData(ErpTransferDirect erpTransferDirect,
  93. HttpServletRequest request, HttpServletResponse response) {
  94. Page<ErpTransferDirect> page = new Page<>(request, response);
  95. List<ErpTransferDirect> list = erpTransferDirectService.findDetailList(erpTransferDirect.getBillNo());
  96. page.setList(list);
  97. page.setCount(list.size());
  98. return page;
  99. }
  100. @RequiresPermissions("mes:erpTransferDirect:view")
  101. @RequestMapping(value = "selectOrder")
  102. public String selectOrder(ErpProductionOrder erpProductionOrder, Model model) {
  103. model.addAttribute("erpProductionOrder", erpProductionOrder);
  104. return "modules/mes/erpTransferDirectSelectOrder";
  105. }
  106. @RequiresPermissions("mes:erpTransferDirect:view")
  107. @RequestMapping(value = "selectOrderData")
  108. @ResponseBody
  109. public Page<ErpProductionOrder> selectOrderData(ErpProductionOrder erpProductionOrder,
  110. HttpServletRequest request, HttpServletResponse response) {
  111. Page<ErpProductionOrder> page = new Page<>(request, response);
  112. int pageSize = page.getPageSize() > 0 ? page.getPageSize() : 20;
  113. int pageNo = page.getPageNo() > 0 ? page.getPageNo() : 1;
  114. int startRow = (pageNo - 1) * pageSize;
  115. // 与生产入库一致:仅展示配置 HEV/115 物料(.10)的生产订单
  116. List<ErpProductionOrder> list = erpProductionOrderService.findPrdInStockOrderPageList(
  117. erpProductionOrder.getBillNo(), startRow, pageSize);
  118. page.setList(list);
  119. page.setCount(startRow + list.size() + (list.size() == pageSize ? 1 : 0));
  120. return page;
  121. }
  122. @RequiresPermissions("mes:erpTransferDirect:view")
  123. @RequestMapping(value = "form")
  124. public String form(String moBillNo, Model model) {
  125. String billNo = StringUtils.trim(moBillNo);
  126. List<ErpPrdInStock> sourceList = erpPrdInStockService.findTransferSourceByMoBillNo(billNo);
  127. List<ErpStockOption> stockList = erpStockService.findUsableStockList();
  128. model.addAttribute("moBillNo", billNo);
  129. model.addAttribute("sourceList", sourceList);
  130. model.addAttribute("stockList", stockList);
  131. model.addAttribute("defaultSrcStockNumber", erpStockService.resolveDefaultStockNumber(stockList));
  132. model.addAttribute("defaultDestStockNumber", StringUtils.trim(erpProperties.getTransferDirectDefaultDestStockNumber()));
  133. if (sourceList.isEmpty()) {
  134. model.addAttribute("message", "该生产订单暂无 HEV/115 生产入库行,请先完成生产入库");
  135. }
  136. return "modules/mes/erpTransferDirectForm";
  137. }
  138. /**
  139. * PDA/前端:入库仓库列表。
  140. */
  141. @RequiresPermissions("mes:erpTransferDirect:view")
  142. @GetMapping(value = "stockList")
  143. @ResponseBody
  144. public Map<String, Object> stockList() {
  145. List<ErpStockOption> stocks = erpStockService.findUsableStockList();
  146. Map<String, Object> result = new HashMap<>(4);
  147. result.put("stockList", stocks);
  148. result.put("defaultStockNumber", erpStockService.resolveDefaultStockNumber(stocks));
  149. result.put("defaultDestStockNumber", StringUtils.trim(erpProperties.getTransferDirectDefaultDestStockNumber()));
  150. result.put("stockHint", stocks.isEmpty() ? "未能从 ERP 加载仓库列表" : "共 " + stocks.size() + " 个可用仓库");
  151. return result;
  152. }
  153. /**
  154. * PDA/前端:新增调拨页初始化(生产入库源行 + 仓库)。
  155. */
  156. @RequiresPermissions("mes:erpTransferDirect:view")
  157. @GetMapping(value = "formInit")
  158. @ResponseBody
  159. public Map<String, Object> formInit(String moBillNo) {
  160. Map<String, Object> result = new HashMap<>(10);
  161. String billNo = StringUtils.trim(moBillNo);
  162. result.put("moBillNo", billNo);
  163. if (StringUtils.isBlank(billNo)) {
  164. result.put("result", Global.FALSE);
  165. result.put("message", "生产订单号不能为空");
  166. result.put("sourceList", Collections.emptyList());
  167. return result;
  168. }
  169. List<ErpPrdInStock> sourceList = erpPrdInStockService.findTransferSourceByMoBillNo(billNo);
  170. result.put("result", Global.TRUE);
  171. result.put("sourceList", sourceList);
  172. if (sourceList.isEmpty()) {
  173. result.put("message", "该生产订单暂无 HEV/115 生产入库行,请先完成生产入库");
  174. } else {
  175. result.put("message", "");
  176. }
  177. List<ErpStockOption> stocks = erpStockService.findUsableStockList();
  178. result.put("stockList", stocks);
  179. result.put("defaultSrcStockNumber", erpStockService.resolveDefaultStockNumber(stocks));
  180. result.put("defaultDestStockNumber", StringUtils.trim(erpProperties.getTransferDirectDefaultDestStockNumber()));
  181. return result;
  182. }
  183. @RequiresPermissions("mes:erpTransferDirect:view")
  184. @RequestMapping(value = "instockSourceData")
  185. @ResponseBody
  186. public Page<ErpPrdInStock> instockSourceData(String moBillNo,
  187. HttpServletRequest request, HttpServletResponse response) {
  188. Page<ErpPrdInStock> page = new Page<>(request, response);
  189. List<ErpPrdInStock> list = erpPrdInStockService.findTransferSourceByMoBillNo(moBillNo);
  190. page.setList(list);
  191. page.setCount(list.size());
  192. return page;
  193. }
  194. @RequiresPermissions("mes:erpTransferDirect:view")
  195. @GetMapping(value = "stockLocOptions")
  196. @ResponseBody
  197. public Map<String, Object> stockLocOptions(String stockNumber) {
  198. List<ErpStockLocOption> locations = erpStockLocService.findLocationsByStock(stockNumber);
  199. Map<String, Object> result = new HashMap<>(4);
  200. boolean required = !locations.isEmpty();
  201. result.put("required", required);
  202. result.put("locations", locations);
  203. result.put("defaultLocNumber", erpStockLocService.resolveDefaultLocNumber(stockNumber, locations));
  204. if (locations.isEmpty()) {
  205. result.put("locHint", "该仓库未启用仓位或未配置仓位值集");
  206. } else {
  207. result.put("locHint", "共 " + locations.size() + " 个仓位");
  208. }
  209. return result;
  210. }
  211. @RequiresPermissions("mes:erpTransferDirect:view")
  212. @PostMapping(value = "submit")
  213. @ResponseBody
  214. public String submit(@RequestBody ErpTransferDirectSubmitRequest request) {
  215. ErpTransferDirectResult result = erpTransferDirectSaveService.submit(request);
  216. if (result.isSuccess()) {
  217. return renderResult(Global.TRUE, text("直接调拨单保存成功,单号:{0}", result.getBillNo()));
  218. }
  219. return renderResult(Global.FALSE, result.getMessage());
  220. }
  221. }