package com.fzzy.sys.controller.inout; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fzzy.common.dto.BaseParam; import com.fzzy.igds.constant.Constant; import com.fzzy.igds.constant.RespCodeEnum; import com.fzzy.igds.data.IgdsBaseParam; import com.fzzy.igds.data.InoutParam; import com.fzzy.igds.data.NoticeParam; import com.fzzy.igds.data.PageResponse; import com.fzzy.igds.domain.*; 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.transaction.annotation.Transactional; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; 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.isBlank(type)) { //默认入库 type = Constant.TYPE_IN; } view.put("type", type); // 类型列表 List listInoutType = commonManager.getInoutType(); view.put("listInoutType", listInoutType); //出入库流程 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); // 车牌识别参数封装 InoutConf conf = inoutManager.getInoutConf(listInoutConf, sort, Constant.CONF_TYPE_10, Constant.PROGRESS_REGISTER, 1); view.put("lprDto", conf); return prefix + "/register"; } /** * 质检页面 * @return */ @RequestMapping("/check") public String check(ModelMap view) { SysUser user = ContextUtil.getLoginUser(); view.put(Constant.MODEL_KEY_LOGIN_USER, user); String deptId = ContextUtil.subDeptId(user); view.put("deptId", deptId); view.put("type", Constant.TYPE_IN); // 仓库列表做下拉框使用 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 listInoutType = commonManager.getInoutType(); view.put("listInoutType", listInoutType); // 粮食品种下拉框 List listFoodVariety = commonManager.getDicTrigger(Constant.TRIGGER_PARENT_FOOD_VARIETY, user.getCompanyId()); view.put("listFoodVariety", listFoodVariety); // 粮食等级下拉框 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 + "/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, @RequestParam(value = "viewTag", required = false) String viewTag, ModelMap view) { if (StringUtils.isEmpty(viewTag)) { viewTag = "1"; } //如果没有指定地磅,从用户上一个选择中获取 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("deptId", deptId); //称重是否可编辑标签 String weightEditTag = inoutManager.getWeightEditTag(user.getCompanyId(), deptId); view.put("weightEditTag", weightEditTag); // 当前流程标签 view.put("progress", Constant.PROGRESS_WEIGHT_TAG); //入库流程配置 String inoutProgress = inoutManager.getInoutProgressConf(user.getCompanyId(), deptId, type); view.put("inoutProgress", inoutProgress); // 类型 List listInoutType = commonManager.getInoutType(); view.put("listInoutType", listInoutType); // 仓库列表做下拉框使用 List listDepot = commonManager.listDepotByDeptId(deptId); view.put(Constant.MODEL_KEY_DEPOT_LIST, listDepot); // 粮食品种下拉框 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); //默认查询时间 view.put("endTime", DateFormatUtils.format(new Date(), "yyyy-MM-dd")); view.put("startTime", DateFormatUtils.format(DateUtil.getNewByDay(null, -30), "yyyy-MM-dd")); String viewStr = prefix + "/weight"; if ("1".equals(viewTag)) { viewStr = prefix + "/weight"; } if ("2".equals(viewTag)) { viewStr = prefix + "/weight2"; } return viewStr; } /** * 分页获取流程未完成的数据 * * @param param * @return */ @RequestMapping("/page-inout-data") @ResponseBody public PageResponse> pageInoutData(@RequestBody InoutParam param) { return inoutManager.pageInoutData(param); } /** * 获取待称重的数据 * * @param param * @return */ @RequestMapping("/list-weight-data") @ResponseBody public PageResponse> listWeightData(@RequestBody InoutParam param) { return inoutManager.listWeightData(param); } /** * 出入库数据查询,根据条件查询数据,出入库数据信息 * * @param param * @return */ @RequestMapping("/inout-query") @ResponseBody public PageResponse inoutQuery(@RequestBody InoutParam param) { if (null == param.getCompanyId()) param.setCompanyId(ContextUtil.getCompanyId()); return inoutManager.inoutQuery(param); } /** * 出入库登记提交 * * @param data * @return */ @RequestMapping("/submit-register") @ResponseBody public PageResponse submitRegister(@RequestBody InoutRecord data) { return inoutManager.submitRegister(data); } /** * 出入库化验信息提交 * @param data * @return */ @RequestMapping("/submit-check") @ResponseBody public PageResponse submitCheck(@RequestBody InoutRecord data) { return inoutManager.submitCheck(data); } /** * 出入库称重环节提交 * @param data * @return */ @RequestMapping("/submit-weight") @ResponseBody public PageResponse submitWeight(@RequestBody InoutRecord data) { return inoutManager.submitWeight(data); } /** * 出入库称重环节提交,请注意:值仓挑提交的数据非出入库流水完整信息,不能直接调用update方法 * * @param data * @return */ @RequestMapping("/submit-handle") @Transactional @ResponseBody public PageResponse submitHandle(@RequestBody InoutRecord data) { log.debug("-------------submitHandle------------------"); return inoutManager.submitHandle(data); } /** * 获取行政区域 * * @return */ @RequestMapping("/page-dicArea") @ResponseBody public PageResponse> pageDicArea(@RequestBody IgdsBaseParam param) { return inoutManager.pageDicArea(param); } /** * 入库通知单-获取没有完成的通知单列表 * * @return */ @RequestMapping("/list-notice-in") @ResponseBody public PageResponse> listNoticeIn(@RequestBody NoticeParam param) { return inoutManager.listNoticeIn(param); } /** * 出库通知单-获取没有完成的通知单列表 * * @return */ @RequestMapping("/list-notice-out") @ResponseBody public PageResponse> listNoticeOut(@RequestBody NoticeParam param) { return inoutManager.listNoticeOut(param); } }