package com.fzzy.sys.controller.inout; import com.fzzy.igds.constant.Constant; import com.fzzy.igds.domain.Depot; import com.fzzy.igds.domain.InoutConf; import com.fzzy.igds.utils.ContextUtil; import com.fzzy.igds.utils.DateUtil; import com.fzzy.sys.manager.common.CommonManager; import com.fzzy.sys.manager.inout.InoutManager; import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.core.domain.entity.SysUser; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.Date; import java.util.List; /** * @Description 出入库控制层 * @Author CZT * @Date 2025/11/29 10:56 */ @Slf4j @Controller @RequestMapping("basic/inout") public class InoutController { private static final String prefix = "inout"; @Resource private InoutManager inoutManager; @Resource private CommonManager commonManager; /** * 出入库快速登记 * * @param httpRequest * @param sort 配套号 * @param type 业务类型:IN-入库,OUT-出库 * @param view * @return */ @RequestMapping("/register") public String register(HttpServletRequest httpRequest, @RequestParam(value = "sort", required = false) String sort, @RequestParam(value = "type", required = false) String type, ModelMap view) { SysUser user = ContextUtil.getLoginUser(); view.put(Constant.MODEL_KEY_LOGIN_USER, user); String deptId = ContextUtil.subDeptId(user); view.put("deptId", deptId); if (StringUtils.isEmpty(sort)) { sort = "1"; } if (StringUtils.isEmpty(sort)) { sort = inoutManager.getInoutWeightByClient(httpRequest); } if (StringUtils.isEmpty(type)) { //默认入库 type = Constant.TYPE_IN; } view.put("type", type); //称重是否可编辑标签 String weightEditTag = inoutManager.getWeightEditTag(user.getCompanyId(), deptId); view.put("weightEditTag", weightEditTag); //出入库流程 String inoutProgress = inoutManager.getInoutProgressConf(user.getCompanyId(), ContextUtil.subDeptId(user), type); view.put("inoutProgress", inoutProgress); // 当前流程节点 view.put("progress", Constant.PROGRESS_REGISTER); // 获取出入库配置信息 List listInoutConf = inoutManager.getListInoutConf(user.getCompanyId(), deptId); //根据出入库设备信息筛选地磅配置信息,所有地磅,支持用户手动选择 List listWeight = inoutManager.getInoutConf(listInoutConf, Constant.CONF_TYPE_30); view.put("listWeight", listWeight); // 获取当前地磅 InoutConf weightDto = inoutManager.getInoutConf(listInoutConf, sort, Constant.CONF_TYPE_30); view.put("weightDto", weightDto); // 过程摄像头1 InoutConf conf = inoutManager.getInoutConf(listInoutConf, sort, Constant.CONF_TYPE_60, Constant.PROGRESS_WEIGHT_TAG, 1); view.put("snapDto1", conf); // 过程摄像头2 conf = inoutManager.getInoutConf(listInoutConf, sort, Constant.CONF_TYPE_60, Constant.PROGRESS_WEIGHT_TAG, 2); view.put("snapDto2", conf); // 过程摄像头3 conf = inoutManager.getInoutConf(listInoutConf, sort, Constant.CONF_TYPE_60, Constant.PROGRESS_WEIGHT_TAG, 3); view.put("snapDto3", conf); return prefix + "/inout-register"; } /** * 质检页面 * @return */ @RequestMapping("/check") public String check(HttpServletRequest httpRequest, ModelMap view) { SysUser user = ContextUtil.getLoginUser(); view.put(Constant.MODEL_KEY_LOGIN_USER, user); String deptId = ContextUtil.subDeptId(user); view.put("type", Constant.TYPE_IN); view.put("deptId", deptId); // 仓库列表做下拉框使用 List listDepot = commonManager.listDepotByDeptId(deptId); view.put(Constant.MODEL_KEY_DEPOT_LIST, listDepot); //入库流程 String inoutProgress = inoutManager.getInoutProgressConf(user.getCompanyId(), deptId, Constant.TYPE_IN); view.put("inoutProgress", inoutProgress); // 当前流程节点 view.put("progress", Constant.PROGRESS_CHECK); // 粮食品种下拉框 List listFoodVariety = commonManager.getDicTrigger( Constant.TRIGGER_PARENT_FOOD_VARIETY, user.getCompanyId()); view.put("listFoodVariety", listFoodVariety); // 粮食性质下拉框 List listFoodType = commonManager.getDicTrigger(Constant.TRIGGER_PARENT_FOOD_TYPE, user.getCompanyId()); view.put("listFoodType", listFoodType); // 粮食等级下拉框 List listFoodLevel = commonManager.getDicTrigger(Constant.TRIGGER_PARENT_FOOD_LEVEL, user.getCompanyId()); view.put("listFoodLevel", listFoodLevel); view.put("endTime", DateFormatUtils.format(new Date(), "yyyy-MM-dd")); view.put("startTime", DateFormatUtils.format(DateUtil.getNewByDay(null, -30), "yyyy-MM-dd")); return prefix + "/inout-check"; } /** * 入库称重操作,包括空车称重和满车称重,共用一个页面 * * @param sort 表示使用的出入库设备配套号,不传递默认为1 * @return */ @RequestMapping("/weight") public String weight(HttpServletRequest httpRequest, @RequestParam(value = "sort", required = false) String sort, @RequestParam(value = "type", required = false) String type, ModelMap view) { //如果没有指定地磅,从用户上一个选择中获取 if (StringUtils.isEmpty(sort)) { sort = "1"; } if (StringUtils.isEmpty(sort)) { sort = inoutManager.getInoutWeightByClient(httpRequest); } if (StringUtils.isEmpty(type)) { //默认入库 type = Constant.TYPE_IN; } view.put("type", type); SysUser user = ContextUtil.getLoginUser(); view.put(Constant.MODEL_KEY_LOGIN_USER, user); String deptId = ContextUtil.subDeptId(user); view.put("type", type); view.put("deptId", deptId); // 仓库列表做下拉框使用 List listDepot = commonManager.listDepotByDeptId(deptId); view.put(Constant.MODEL_KEY_DEPOT_LIST, listDepot); // 当前流程标签 view.put("progress", Constant.PROGRESS_WEIGHT_TAG); //入库流程配置 String inoutProgress = inoutManager.getInoutProgressConf(user.getCompanyId(), deptId, Constant.TYPE_IN); view.put("inoutProgress", inoutProgress); //称重是否可编辑标签 String weightEditTag = inoutManager.getWeightEditTag(user.getCompanyId(), deptId); view.put("weightEditTag", weightEditTag); // 粮食品种下拉框 List listFoodVariety = commonManager.getDicTrigger(Constant.TRIGGER_PARENT_FOOD_VARIETY, user.getCompanyId()); view.put("listFoodVariety", listFoodVariety); // 获取出入库设备配置信息 List listInoutConf = inoutManager.getListInoutConf(user.getCompanyId(), deptId); //根据出入库设备信息筛选地磅配置信息,所有地磅,支持用户手动选择 List listWeight = inoutManager.getInoutConf(listInoutConf, Constant.CONF_TYPE_30); view.put("listWeight", listWeight); // 获取当前地磅 InoutConf weightDto = inoutManager.getInoutConf(listInoutConf, sort, Constant.CONF_TYPE_30); view.put("weightDto", weightDto); // 过程摄像头1 InoutConf conf = inoutManager.getInoutConf(listInoutConf, sort, Constant.CONF_TYPE_60, Constant.PROGRESS_WEIGHT_TAG, 1); view.put("snapDto1", conf); // 过程摄像头2 conf = inoutManager.getInoutConf(listInoutConf, sort, Constant.CONF_TYPE_60, Constant.PROGRESS_WEIGHT_TAG, 2); view.put("snapDto2", conf); // 过程摄像头3 conf = inoutManager.getInoutConf(listInoutConf, sort, Constant.CONF_TYPE_60, Constant.PROGRESS_WEIGHT_TAG, 3); view.put("snapDto3", conf); return prefix + "/inout-weight"; } }