| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285 |
- package com.jeesite.modules.wms.web;
- import java.util.List;
- import java.util.Map;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import com.jeesite.common.collect.ListUtils;
- import com.jeesite.common.collect.MapUtils;
- import com.jeesite.common.lang.ObjectUtils;
- import com.jeesite.common.lang.StringUtils;
- import com.jeesite.modules.file.entity.FileUpload;
- import com.jeesite.modules.file.service.FileUploadService;
- import com.jeesite.modules.mes.entity.MesProduct;
- import com.jeesite.modules.mes.entity.MesProductOrder;
- import com.jeesite.modules.mes.entity.MesProductPlan;
- import com.jeesite.modules.mes.resp.CommonResp;
- import com.jeesite.modules.mes.service.MesProductOrderService;
- import com.jeesite.modules.mes.service.MesProductPlanService;
- import com.jeesite.modules.wms.entity.*;
- import com.jeesite.modules.wms.service.WmsBomMaterialService;
- import com.jeesite.modules.wms.service.WmsMaterialService;
- import com.jeesite.modules.wms.service.WmsPickMaterialService;
- import org.apache.shiro.authz.annotation.Logical;
- import org.apache.shiro.authz.annotation.RequiresPermissions;
- import org.apache.shiro.authz.annotation.Logical;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.transaction.annotation.Transactional;
- 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.entity.Page;
- import com.jeesite.common.web.BaseController;
- import com.jeesite.modules.wms.service.WmsPickService;
- /**
- * 物料领料单Controller
- * @author hzd
- * @version 2026-03-15
- */
- @Controller
- @RequestMapping(value = "${adminPath}/wms/wmsPick")
- public class WmsPickController extends BaseController {
- @Autowired
- private WmsPickService wmsPickService;
- @Autowired
- private MesProductPlanService mesProductPlanService;
- @Autowired
- private MesProductOrderService mesProductOrderService;
- @Autowired
- private WmsBomMaterialService wmsBomMaterialService;
- @Autowired
- private WmsPickMaterialService wmsPickMaterialService;
- @Autowired
- private FileUploadService fileUploadService;
- @Autowired
- private WmsMaterialService wmsMaterialService;
- /**
- * 获取数据
- */
- @ModelAttribute
- public WmsPick get(String id, boolean isNewRecord) {
- return wmsPickService.get(id, isNewRecord);
- }
-
- /**
- * 查询列表
- */
- @RequiresPermissions("wms:wmsPick:view")
- @RequestMapping(value = {"list", ""})
- public String list(WmsPick wmsPick, Model model) {
- model.addAttribute("wmsPick", wmsPick);
- return "modules/wms/wmsPickList";
- }
-
- /**
- * 查询列表数据
- */
- @RequiresPermissions(value={"wms:wmsPick:view", "mes:mesProductOrder:view"}, logical=Logical.OR)
- @RequestMapping(value = "listData")
- @ResponseBody
- public Page<WmsPick> listData(WmsPick wmsPick, HttpServletRequest request, HttpServletResponse response) {
- wmsPick.setPage(new Page<>(request, response));
- Page<WmsPick> page = wmsPickService.findPage(wmsPick);
- // 兼容不同 MyBatis 驼峰映射配置,确保列表始终返回生产订单编号。
- for (WmsPick pick : page.getList()) {
- if (StringUtils.isEmpty(pick.getOrderSn()) && !StringUtils.isEmpty(pick.getOrderId())) {
- MesProductOrder order = mesProductOrderService.get(pick.getOrderId());
- if (order != null) pick.setOrderSn(order.getSn());
- }
- }
- return page;
- }
- /**
- * 查看编辑表单
- */
- @RequiresPermissions("wms:wmsPick:view")
- @RequestMapping(value = "form")
- public String form(WmsPick wmsPick, Model model) {
- model.addAttribute("wmsPick", wmsPick);
- return "modules/wms/wmsPickForm";
- }
- /**
- * 保存数据
- */
- @RequiresPermissions("wms:wmsPick:edit")
- @PostMapping(value = "save")
- @ResponseBody
- public String save(@Validated WmsPick wmsPick) {
- MesProductOrder mesProductOrder = mesProductOrderService.get(wmsPick.getOrderId());
- WmsBomMaterial query = new WmsBomMaterial();
- query.setBomId(mesProductOrder.getBomId());
- query.setStatus("0");
- List<WmsBomMaterial> bomItems = wmsBomMaterialService.findList(query);
- if (bomItems.isEmpty())
- return renderResult(Global.FALSE, text("订单BOM未配置有效物料!"));
- wmsPickService.save(wmsPick);
- for (WmsBomMaterial bomItem : bomItems)
- {
- WmsPickMaterial item = new WmsPickMaterial();
- item.setPickId(wmsPick.getId());
- item.setMaterialId(bomItem.getMaterialId());
- item.setPlanNums(Integer.valueOf(bomItem.getNums()) * wmsPick.getOrderNums());
- item.setPickNums(0);
- item.setState("0");
- item.setStatus("0");
- wmsPickMaterialService.save(item);
- }
- return renderResult(Global.TRUE, text("保存物料领料单成功!"));
- }
- @RequestMapping(value = "add")
- @Transactional
- @ResponseBody
- public String add(HttpServletRequest request) {
- String planId = request.getParameter("planId");
- if(StringUtils.isEmpty(planId)) {
- return renderResult(Global.FALSE, text("参数错误!"));
- }
- MesProductPlan mesProductPlan = mesProductPlanService.get(planId);
- if(ObjectUtils.isEmpty(mesProductPlan)) {
- return renderResult(Global.FALSE, text("参数错误!"));
- }
- if(mesProductPlan.getIsPick().equals("1")){
- return renderResult(Global.FALSE, text("已生成过领料单!"));
- }
- MesProductOrder mesProductOrder = mesProductOrderService.get(mesProductPlan.getOrderId());
- if (ObjectUtils.isEmpty(mesProductOrder)) {
- return renderResult(Global.FALSE, text("参数错误!"));
- }
- if (!"1".equals(mesProductOrder.getState())) {
- return renderResult(Global.FALSE, text("生产订单下发后才能生成领料单!"));
- }
- WmsBomMaterial wmsBomMaterial = new WmsBomMaterial();
- wmsBomMaterial.setStatus("0");
- wmsBomMaterial.setBomId(mesProductOrder.getBomId());
- List<WmsBomMaterial> lists = wmsBomMaterialService.findList(wmsBomMaterial);
- if (ListUtils.isEmpty(lists)) {
- return renderResult(Global.FALSE, text("BOM物料未设置!"));
- }
- WmsPick wmsPick = new WmsPick();
- wmsPick.setPlanId(planId);
- wmsPick.setOrderId(mesProductOrder.getId());
- wmsPick.setState("0");
- wmsPickService.save(wmsPick);
- mesProductPlan.setIsPick("1");
- mesProductPlanService.save(mesProductPlan);
- for (WmsBomMaterial wmsMaterial: lists) {
- WmsPickMaterial wmsPickMaterial = new WmsPickMaterial();
- wmsPickMaterial.setState("0");
- wmsPickMaterial.setStatus("0");
- wmsPickMaterial.setPickId(wmsPick.getId());
- wmsPickMaterial.setMaterialId(wmsMaterial.getMaterialId());
- int plan_nums = mesProductPlan.getNums() * Integer.valueOf(wmsMaterial.getNums());
- wmsPickMaterial.setPlanNums(plan_nums);
- wmsPickMaterial.setPickNums(0);
- wmsPickMaterialService.save(wmsPickMaterial);
- }
- return renderResult(Global.TRUE, text("操作成功!"));
- }
-
- /**
- * 删除数据
- */
- @RequiresPermissions("wms:wmsPick:edit")
- @RequestMapping(value = "delete")
- @ResponseBody
- public String delete(WmsPick wmsPick) {
- wmsPickService.delete(wmsPick);
- return renderResult(Global.TRUE, text("删除物料领料单成功!"));
- }
- @RequiresPermissions(value={"wms:wmsPick:view", "mes:mesProductOrder:view"}, logical=Logical.OR)
- @RequestMapping(value = "detail")
- public String detail(WmsPick wmsPick, Model model) {
- model.addAttribute("wmsPick", wmsPick);
- MesProductOrder order = wmsPick.getOrderId() == null ? null : mesProductOrderService.get(wmsPick.getOrderId());
- model.addAttribute("mesProductOrder", order);
- WmsPickMaterial wmsPickMaterial = new WmsPickMaterial();
- wmsPickMaterial.setStatus("0");
- wmsPickMaterial.setPickId(wmsPick.getId());
- List<WmsPickMaterial> lists = wmsPickMaterialService.findList(wmsPickMaterial);
- for (WmsPickMaterial item : lists) {
- WmsMaterial material = wmsMaterialService.get(new WmsMaterial(item.getMaterialId()));
- if (material != null) item.setMaterialTitle(material.getTitle());
- }
- model.addAttribute("lists", lists);
- model.addAttribute("hasPickItems", !lists.isEmpty());
- return "modules/wms/wmsPickInfo";
- }
- // @RequiresPermissions("wms:wmsPick:api")
- @RequestMapping(value = "lists")
- @ResponseBody
- public CommonResp lists(WmsPick wmsPick, HttpServletRequest request, HttpServletResponse response) {
- CommonResp<Page> resp = new CommonResp<>();
- wmsPick.setPage(new Page<>(request, response));
- Page<WmsPick> page = wmsPickService.findPage(wmsPick);
- resp.setData(page);
- resp.setResult(Global.TRUE);
- return resp;
- }
- // @RequiresPermissions("wms:wmsPick:api")
- @RequestMapping(value = "info")
- @ResponseBody
- public CommonResp info(WmsPick wmsPick, HttpServletRequest request, HttpServletResponse response) {
- CommonResp<WmsPick> resp = new CommonResp<>();
- String host = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + "/js";
- FileUpload fu = new FileUpload();
- fu.setBizKey(wmsPick.getId());
- fu.setBizType("wmsPick_image");
- List<FileUpload> finfo = fileUploadService.findList(fu);
- List imgList = ListUtils.newArrayList();
- for (FileUpload fi:finfo){
- Map<String, Object> map1 = MapUtils.newHashMap();
- map1.put("id",fi.getFileEntity().getFileId());
- map1.put("url",host + fi.getFileUrl());
- map1.put("name",fi.getFileName());
- map1.put("size",fi.getFileEntity().getFileSize());
- imgList.add(map1);
- }
- wmsPick.setImgList(imgList);
- WmsPickMaterial wmsPickMaterial = new WmsPickMaterial();
- wmsPickMaterial.setStatus("0");
- wmsPickMaterial.setPickId(wmsPick.getId());
- List<WmsPickMaterial> lists = wmsPickMaterialService.findList(wmsPickMaterial);
- for (WmsPickMaterial wmsMaterial: lists) {
- WmsMaterial wmsMaterial1 = wmsMaterialService.get(wmsMaterial.getMaterialId());
- wmsMaterial.setMaterialTitle(wmsMaterial1.getTitle());
- }
- wmsPick.setMaterialList(lists);
- resp.setData(wmsPick);
- resp.setResult(Global.TRUE);
- return resp;
- }
-
- }
|