|
|
@@ -0,0 +1,238 @@
|
|
|
+package com.jeesite.modules.mes.web;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+
|
|
|
+import com.jeesite.common.lang.ObjectUtils;
|
|
|
+import com.jeesite.modules.mes.entity.MesProduct;
|
|
|
+import com.jeesite.modules.mes.entity.MesProductSale;
|
|
|
+import com.jeesite.modules.mes.service.MesProductSaleService;
|
|
|
+import com.jeesite.modules.mes.service.MesProductService;
|
|
|
+import org.apache.shiro.authz.annotation.RequiresPermissions;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Controller;
|
|
|
+import org.springframework.ui.Model;
|
|
|
+import org.springframework.validation.annotation.Validated;
|
|
|
+import org.springframework.web.bind.annotation.ModelAttribute;
|
|
|
+import org.springframework.web.bind.annotation.PostMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
+
|
|
|
+import com.jeesite.common.config.Global;
|
|
|
+import com.jeesite.common.collect.ListUtils;
|
|
|
+import com.jeesite.common.entity.Page;
|
|
|
+import com.jeesite.common.lang.DateUtils;
|
|
|
+import com.jeesite.common.lang.StringUtils;
|
|
|
+import com.jeesite.common.utils.excel.ExcelExport;
|
|
|
+import com.jeesite.common.utils.excel.annotation.ExcelField.Type;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
+import com.jeesite.common.web.BaseController;
|
|
|
+import com.jeesite.modules.mes.entity.MesSaleSn;
|
|
|
+import com.jeesite.modules.mes.service.MesSaleSnService;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 销售订单工件绑定Controller
|
|
|
+ * @author sxl
|
|
|
+ * @version 2026-10-14
|
|
|
+ */
|
|
|
+@Controller
|
|
|
+@RequestMapping(value = "${adminPath}/mes/mesSaleSn")
|
|
|
+public class MesSaleSnController extends BaseController {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MesSaleSnService mesSaleSnService;
|
|
|
+ @Autowired
|
|
|
+ private MesProductSaleService mesProductSaleService;
|
|
|
+ @Autowired
|
|
|
+ private MesProductService mesProductService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取数据
|
|
|
+ */
|
|
|
+ @ModelAttribute
|
|
|
+ public MesSaleSn get(String id, boolean isNewRecord) {
|
|
|
+ return mesSaleSnService.get(id, isNewRecord);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询列表
|
|
|
+ */
|
|
|
+ @RequiresPermissions("mes:mesSaleSn:view")
|
|
|
+ @RequestMapping(value = {"list", ""})
|
|
|
+ public String list(MesSaleSn mesSaleSn, Model model) {
|
|
|
+ model.addAttribute("mesSaleSn", mesSaleSn);
|
|
|
+ return "modules/mes/mesSaleSnList";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询列表数据
|
|
|
+ */
|
|
|
+ @RequiresPermissions("mes:mesSaleSn:view")
|
|
|
+ @RequestMapping(value = "listData")
|
|
|
+ @ResponseBody
|
|
|
+ public Page<MesSaleSn> listData(MesSaleSn mesSaleSn, HttpServletRequest request, HttpServletResponse response) {
|
|
|
+ mesSaleSn.setPage(new Page<>(request, response));
|
|
|
+ Page<MesSaleSn> page = mesSaleSnService.findPage(mesSaleSn);
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查看编辑表单
|
|
|
+ */
|
|
|
+ @RequiresPermissions("mes:mesSaleSn:view")
|
|
|
+ @RequestMapping(value = "form")
|
|
|
+ public String form(MesSaleSn mesSaleSn, Model model) {
|
|
|
+ model.addAttribute("mesSaleSn", mesSaleSn);
|
|
|
+ return "modules/mes/mesSaleSnForm";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存数据
|
|
|
+ */
|
|
|
+ @RequiresPermissions("mes:mesSaleSn:edit")
|
|
|
+ @PostMapping(value = "save")
|
|
|
+ @ResponseBody
|
|
|
+ public String save(@Validated MesSaleSn mesSaleSn) {
|
|
|
+ mesSaleSnService.save(mesSaleSn);
|
|
|
+ return renderResult(Global.TRUE, text("保存销售订单工件绑定成功!"));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出数据
|
|
|
+ */
|
|
|
+ @RequiresPermissions("mes:mesSaleSn:view")
|
|
|
+ @RequestMapping(value = "exportData")
|
|
|
+ public void exportData(MesSaleSn mesSaleSn, HttpServletResponse response) {
|
|
|
+ List<MesSaleSn> list = mesSaleSnService.findList(mesSaleSn);
|
|
|
+ String fileName = "销售订单工件绑定" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
|
|
|
+ try(ExcelExport ee = new ExcelExport("销售订单工件绑定", MesSaleSn.class)){
|
|
|
+ ee.setDataList(list).write(response, fileName);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 下载模板
|
|
|
+ */
|
|
|
+ @RequiresPermissions("mes:mesSaleSn:view")
|
|
|
+ @RequestMapping(value = "importTemplate")
|
|
|
+ public void importTemplate(HttpServletResponse response) {
|
|
|
+ MesSaleSn mesSaleSn = new MesSaleSn();
|
|
|
+ List<MesSaleSn> list = ListUtils.newArrayList(mesSaleSn);
|
|
|
+ String fileName = "销售订单工件绑定模板.xlsx";
|
|
|
+ try(ExcelExport ee = new ExcelExport("销售订单工件绑定", MesSaleSn.class, Type.IMPORT)){
|
|
|
+ ee.setDataList(list).write(response, fileName);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导入数据
|
|
|
+ */
|
|
|
+ @ResponseBody
|
|
|
+ @RequiresPermissions("mes:mesSaleSn:edit")
|
|
|
+ @PostMapping(value = "importData")
|
|
|
+ public String importData(MultipartFile file) {
|
|
|
+ try {
|
|
|
+ String message = mesSaleSnService.importData(file);
|
|
|
+ return renderResult(Global.TRUE, "posfull:"+message);
|
|
|
+ } catch (Exception ex) {
|
|
|
+ return renderResult(Global.FALSE, "posfull:"+ex.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除数据
|
|
|
+ */
|
|
|
+ @RequiresPermissions("mes:mesSaleSn:edit")
|
|
|
+ @RequestMapping(value = "delete")
|
|
|
+ @ResponseBody
|
|
|
+ public String delete(MesSaleSn mesSaleSn) {
|
|
|
+ mesSaleSnService.delete(mesSaleSn);
|
|
|
+ return renderResult(Global.TRUE, text("删除销售订单工件绑定成功!"));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @RequestMapping(value = "findSaleList")
|
|
|
+ @ResponseBody
|
|
|
+ public String findSaleList() {
|
|
|
+ MesProductSale query = new MesProductSale();
|
|
|
+ query.setShState("1");
|
|
|
+ List<MesProductSale> list = mesProductSaleService.findList(query);
|
|
|
+ if (list != null) {
|
|
|
+ for (MesProductSale sale : list) {
|
|
|
+ MesSaleSn boundQuery = new MesSaleSn();
|
|
|
+ boundQuery.setSaleId(sale.getSaleOrder());
|
|
|
+ long bandQty = mesSaleSnService.findCount(boundQuery);
|
|
|
+ sale.setBandQty(String.valueOf(bandQty));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return renderResult(Global.TRUE, text("查询成功!"), list);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 销售订单绑定工件码(同一工件码只能绑定一次;已绑定数不能大于销售数量)
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "bandSaleSn")
|
|
|
+ @ResponseBody
|
|
|
+ public String bandSaleSn(String saleId, String sn) {
|
|
|
+ if (StringUtils.isBlank(saleId)) {
|
|
|
+ return renderResult(Global.FALSE, text("销售订单号不能为空!"));
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(sn)) {
|
|
|
+ return renderResult(Global.FALSE, text("工件码不能为空!"));
|
|
|
+ }
|
|
|
+ saleId = saleId.trim();
|
|
|
+ sn = sn.trim();
|
|
|
+
|
|
|
+ MesProduct mesProductQuery = new MesProduct();
|
|
|
+ mesProductQuery.setSn(sn);
|
|
|
+ List<MesProduct> productList = mesProductService.findList(mesProductQuery);
|
|
|
+ if (productList == null || productList.isEmpty() || ObjectUtils.isEmpty(productList.get(0))) {
|
|
|
+ return renderResult(Global.FALSE, text("工件不存在!"));
|
|
|
+ }
|
|
|
+
|
|
|
+ MesSaleSn existQuery = new MesSaleSn();
|
|
|
+ existQuery.setSn(sn);
|
|
|
+ if (mesSaleSnService.findCount(existQuery) > 0) {
|
|
|
+ return renderResult(Global.FALSE, text("该工件码已绑定销售订单,不允许重复绑定!"));
|
|
|
+ }
|
|
|
+
|
|
|
+ MesProductSale saleQuery = new MesProductSale();
|
|
|
+ saleQuery.setSaleOrder(saleId);
|
|
|
+ saleQuery.setShState("1");
|
|
|
+ List<MesProductSale> saleList = mesProductSaleService.findList(saleQuery);
|
|
|
+ if (saleList == null || saleList.isEmpty()) {
|
|
|
+ return renderResult(Global.FALSE, text("销售订单不存在!"));
|
|
|
+ }
|
|
|
+ long saleQtyTotal = 0;
|
|
|
+ for (MesProductSale sale : saleList) {
|
|
|
+ if (StringUtils.isBlank(sale.getSaleQty())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ saleQtyTotal += (long) Double.parseDouble(sale.getSaleQty().trim());
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ return renderResult(Global.FALSE, text("销售数量格式不正确!"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (saleQtyTotal <= 0) {
|
|
|
+ return renderResult(Global.FALSE, text("销售数量未配置!"));
|
|
|
+ }
|
|
|
+ MesSaleSn boundQuery = new MesSaleSn();
|
|
|
+ boundQuery.setSaleId(saleId);
|
|
|
+ long boundCount = mesSaleSnService.findCount(boundQuery);
|
|
|
+ if (boundCount >= saleQtyTotal) {
|
|
|
+ return renderResult(Global.FALSE, text("该订单已绑定数量已达销售数量,不允许再绑定!"));
|
|
|
+ }
|
|
|
+
|
|
|
+ MesSaleSn mesSaleSn = new MesSaleSn();
|
|
|
+ mesSaleSn.setSaleId(saleId);
|
|
|
+ mesSaleSn.setSn(sn);
|
|
|
+ mesSaleSnService.save(mesSaleSn);
|
|
|
+ return renderResult(Global.TRUE, text("绑定成功!"));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+}
|