| | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.commons.lang3.time.DateFormatUtils; |
| | | import org.apache.commons.lang3.time.DateUtils; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | } |
| | | } |
| | | |
| | | public InoutData inoutProgressQuery(InoutData data) throws Exception { |
| | | InoutParam param = new InoutParam(); |
| | | param.setCompanyId(data.getCompanyId()); |
| | | param.setPlateNum(data.getPlateNum()); |
| | | param.setIntelCard(data.getIntelCard()); |
| | | param.setType(data.getType()); |
| | | |
| | | return inoutService.inoutProgressQuery(param); |
| | | } |
| | | |
| | | /** |
| | | * 化验结果不通过时校验配置信息 |
| | |
| | | data.setCompleteTime(DateUtils.addMinutes(new Date(), 2)); |
| | | data.setCompleteUser(ContextUtil.getLoginUserCName()); |
| | | data.setProgress(nextProgress); |
| | | } |
| | | |
| | | return data; |
| | | } |
| | | |
| | | /** |
| | | * 当前方法需要删除 |
| | | * <p> |
| | | * 根据需要保存的数据,调整下一个流程状态 不同的仓库组织流程可能不一样,需要根据实际调整 |
| | | * |
| | | * @param data |
| | | * @return |
| | | */ |
| | | private InoutData updateBasicInfo(InoutData data, InoutSysConf sysConf) { |
| | | if (InoutConstant.PROGRESS_REGISTER.equals(data.getProgress())) { |
| | | data.setRegisterTime(new Date()); |
| | | data.setRegisterUser(ContextUtil.getLoginUserCName()); |
| | | data.setProgress(getNextProgress(data.getProgress(), |
| | | data.getType(), sysConf)); |
| | | |
| | | return data; |
| | | } |
| | | |
| | | if (InoutConstant.PROGRESS_CHECK.equals(data.getProgress())) { |
| | | data.setCheckUser(ContextUtil.getLoginUserCName()); |
| | | data.setProgress(getNextProgress(data.getProgress(), |
| | | data.getType(), sysConf)); |
| | | return data; |
| | | } |
| | | |
| | | if (InoutConstant.PROGRESS_WEIGHT_EMPTY.equals(data.getProgress())) { |
| | | data.setEmptyWeightTime(new Date()); |
| | | data.setEmptyWeightUser(ContextUtil.getLoginUserCName()); |
| | | data.setProgress(getNextProgress(data.getProgress(), |
| | | data.getType(), sysConf)); |
| | | |
| | | return data; |
| | | } |
| | | |
| | | if (InoutConstant.PROGRESS_HANDLE.equals(data.getProgress())) { |
| | | // 查询缓存中仓库信息,根据仓库id设置值仓人为仓库保管员 |
| | | Depot depot = commonService.getCacheDepot(data.getCompanyId(), |
| | | data.getDepotId()); |
| | | data.setHandleUser(depot == null ? "" : depot.getStoreKeeperName()); |
| | | data.setProgress(getNextProgress(data.getProgress(), |
| | | data.getType(), sysConf)); |
| | | |
| | | return data; |
| | | } |
| | | |
| | | if (InoutConstant.PROGRESS_WEIGHT_FULL.equals(data.getProgress())) { |
| | | data.setFullWeightTime(new Date()); |
| | | data.setFullWeightUser(ContextUtil.getLoginUserCName()); |
| | | data.setProgress(getNextProgress(data.getProgress(), |
| | | data.getType(), sysConf)); |
| | | if (InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) { |
| | | data.setCompleteTime(DateUtils.addMinutes(new Date(), 2)); |
| | | data.setCompleteUser(ContextUtil.getLoginUserCName()); |
| | | } |
| | | return data; |
| | | } |
| | | |
| | | if (InoutConstant.PROGRESS_CARD_BACK.equals(data.getProgress())) { |
| | | data.setCompleteTime(new Date()); |
| | | data.setCompleteUser(ContextUtil.getLoginUserCName()); |
| | | data.setProgress(getNextProgress(data.getProgress(), |
| | | data.getType(), sysConf)); |
| | | |
| | | return data; |
| | | } |
| | | |
| | | return data; |
| | |
| | | // 添加补单数据 |
| | | String msg = inoutService.insertData(data); |
| | | |
| | | // 初始化验证出入库库存 |
| | | commonService.initInoutDepotStore(data); |
| | | return msg; |
| | | } |
| | | |
| | |
| | | |
| | | if (InoutConstant.RECORD_STATUS_DEL.equals(data.getRecordStatus())) { |
| | | return "系统:已经删除的数据不支持修改!"; |
| | | } |
| | | if (InoutConstant.RECORD_STATUS_ERROR.equals(data.getRecordStatus())) { |
| | | return "系统:异常终止的数据不支持修改!"; |
| | | } |
| | | |
| | | // 如果流程未结束,只更新数据 |
| | |
| | | if (InoutConstant.RECORD_STATUS_DEL.equals(record.getRecordStatus())) { |
| | | return "系统:已经删除的数据不支持修改!"; |
| | | } |
| | | if (InoutConstant.RECORD_STATUS_ERROR.equals(record.getRecordStatus())) { |
| | | return "系统:异常终止的数据不支持修改!"; |
| | | } |
| | | |
| | | // 保存检测项目 |
| | | if (InoutConstant.TYPE_IN.equals(data.getType())) { |
| | |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 删除操作 删除数据为软删除,删除数据后需要根据删除情况联动库存等信息 |
| | | * |
| | | * @param data |
| | | * @param selected 是否已经查询过数据 |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Transactional |
| | | public String delInoutData(InoutData data, boolean selected) |
| | | throws Exception { |
| | | |
| | | // 避免页面缓存首先获取数据库中最新的当前数据信息 |
| | | InoutParam param = new InoutParam(); |
| | | param.setCompanyId(data.getCompanyId()); |
| | | param.setId(data.getId()); |
| | | param.setMsg(" [" + ContextUtil.getLoginUserCName() + "]执行删除,原因:" |
| | | + data.getRemarks()); |
| | | |
| | | if (!selected) { |
| | | data = inoutService.inoutQueryById(param); |
| | | |
| | | if (InoutConstant.RECORD_STATUS_DEL.equals(data.getRecordStatus())) { |
| | | return "已经删除的数据,不支持重复删除!"; |
| | | } |
| | | if (InoutConstant.RECORD_STATUS_ERROR |
| | | .equals(data.getRecordStatus())) { |
| | | return "当前数据已经被标记为异常,不支持删除!"; |
| | | } |
| | | } |
| | | |
| | | // 执行删除 |
| | | param.setProgress(InoutConstant.PROGRESS_RECORD); |
| | | param.setRecordStatus(InoutConstant.RECORD_STATUS_DEL); |
| | | param.setType(data.getType()); |
| | | inoutService.deleteData(param); |
| | | |
| | | // 如果流程未结束,直接删除,不牵扯到联动调整 |
| | | if (!InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) { |
| | | return null; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 异常终止操作 设置异常 为了避免页面数据缓存,需要重新获取最新数据判断 |
| | |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Transactional |
| | | public String errorInoutData(InoutData data) { |
| | | |
| | | public String errorInoutData(InoutData data) throws Exception { |
| | | InoutParam param = new InoutParam(); |
| | | param.setCompanyId(data.getCompanyId()); |
| | | param.setId(data.getId()); |
| | | param.setMsg(" [" + ContextUtil.getLoginUserCName() + "]执行异常终止,原因:" |
| | | + data.getRemarks()); |
| | | |
| | | param.setMsg(" 于" + DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm") + " 被 " + ContextUtil.getLoginUserCName() + " 执行终止,原因:" + data.getRemarks()); |
| | | |
| | | data = inoutService.inoutQueryById(param); |
| | | |
| | | if (InoutConstant.RECORD_STATUS_DEL.equals(data.getRecordStatus())) { |
| | | return "已经删除的数据,不支持异常处理!"; |
| | | } |
| | | if (InoutConstant.RECORD_STATUS_ERROR.equals(data.getRecordStatus())) { |
| | | return "不支持重复异常处理!"; |
| | | } |
| | | if (InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) { |
| | | return "流程结束的数据不支持异常处理!"; |
| | | } |
| | | if (InoutConstant.RECORD_STATUS_DEL.equals(data.getRecordStatus())) { |
| | | return "当前信息已做异常处理,不支持重复执行!"; |
| | | } |
| | | |
| | | |
| | | param.setDeptId(data.getDeptId()); |
| | | param.setType(data.getType()); |
| | | return inoutService.inoutStop(param); |
| | | } |
| | | |
| | |
| | | * @return |
| | | */ |
| | | public String completeInoutData(InoutData data) throws Exception { |
| | | if (InoutConstant.RECORD_STATUS_DEL.equals(data.getRecordStatus())) { |
| | | return "已经删除的数据,不支持完成!"; |
| | | } |
| | | if (InoutConstant.RECORD_STATUS_ERROR.equals(data.getRecordStatus())) { |
| | | return "异常终止的数据,不支持完成!"; |
| | | } |
| | | if (InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) { |
| | | return "流程已完成的数据,不支持完成!"; |
| | | } |
| | | |
| | | // 从新查询数据 |
| | | InoutParam param = new InoutParam(); |
| | | param.setId(data.getId()); |
| | | param.setCompanyId(data.getCompanyId()); |
| | | param.setType(data.getType()); |
| | | InoutData cuData = inoutService.inoutProgressQuery(param); |
| | | InoutData cuData = inoutService.inoutQueryById(param); |
| | | if (null == cuData) { |
| | | return "当前车辆流程状态已经变化,请刷新页面重新操作!"; |
| | | } |
| | | |
| | | if (!cuData.getProgress().equals(data.getProgress())) { |
| | | return "当前车辆流程状态已经变化,请刷新页面重新操作!"; |
| | | } |
| | | |
| | | if (InoutConstant.RECORD_STATUS_DEL.equals(cuData.getRecordStatus())) { |
| | | return "当前信息已经被异常终止,不支持当前处理!"; |
| | | } |
| | | if (InoutConstant.PROGRESS_RECORD.equals(cuData.getProgress())) { |
| | | return "流程已完成的数据,不支持完成!"; |
| | | } |
| | | |
| | | if (null == data.getCompleteTime()) { |
| | |
| | | |
| | | String msg = inoutService.quickComplete(data); |
| | | |
| | | if (null == msg) { |
| | | data.setProgress(InoutConstant.PROGRESS_RECORD); |
| | | commonService.initInoutDepotStore(data); |
| | | } |
| | | |
| | | return msg; |
| | | } |
| | | |
| | |
| | | return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "执行成功"); |
| | | } |
| | | |
| | | public PageResponse<InoutCheckData> submitCheck(InoutCheckData data) throws Exception { |
| | | |
| | | // 获取系统参数配置 |
| | | InoutSysConf inoutSysConf = inoutCommonService.getCacheInoutSysConf(data.getCompanyId(), data.getDeptId()); |
| | | if (null == inoutSysConf) { |
| | | return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), |
| | | "提示:当前库区未配置出入库流程信息,请联系管理员", data); |
| | | } |
| | | |
| | | // 获取业务数据信息 |
| | | InoutParam param = new InoutParam(); |
| | | param.setCompanyId(data.getCompanyId()); |
| | | param.setId(data.getId()); |
| | | InoutData curData = inoutService.inoutProgressQuery(param); |
| | | |
| | | if (null == curData) { |
| | | return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), |
| | | "没有获取到入库业务数据信息,更新失败", data); |
| | | } |
| | | |
| | | if (InoutConstant.PROGRESS_RECORD.equals(curData.getProgress())) { |
| | | return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), |
| | | "当前流程已经结束,不支持修改"); |
| | | } |
| | | |
| | | |
| | | // 更新化验项信息 |
| | | CheckUpdateResult checkResult = checkStandardManager.updateCheckItems(data.getCheckId(), data.getCompanyId(), data.getCheckItems()); |
| | | if (StringUtils.isNotEmpty(checkResult.getMsg())) { |
| | | return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), |
| | | "后台执行异常:" + checkResult.getMsg(), data); |
| | | } |
| | | |
| | | // 设置化验信息 |
| | | if (checkResult.getDeSum() > 0) { |
| | | curData.setDeCheck(checkResult.getDeSum()); |
| | | data.setDeCheck(checkResult.getDeSum()); |
| | | } |
| | | if (checkResult.getAddSum() > 0) { |
| | | curData.setAddCheck(checkResult.getAddSum()); |
| | | data.setAddCheck(checkResult.getAddSum()); |
| | | } |
| | | if (null == data.getCheckTime()) { |
| | | curData.setCheckTime(new Date()); |
| | | data.setCheckTime(new Date()); |
| | | } |
| | | curData.setCheckStatus(data.getCheckStatus()); |
| | | |
| | | |
| | | // 获取下一个流程状态 |
| | | String curProgress = curData.getProgress(); |
| | | String nextProgress = getNextProgress(curProgress, curData.getType(), inoutSysConf); |
| | | curData = updateBasicInfo(curData, curProgress, nextProgress); |
| | | |
| | | // 若化验结果不合格,判断配置后续流程 |
| | | if (InoutConstant.STATUS_UNPASS.equals(curData.getCheckStatus())) { |
| | | curData = checkNoPass(curData); |
| | | } |
| | | |
| | | curData.setProgress(curData.getProgress()); |
| | | curData.setType(curData.getType()); |
| | | |
| | | if (StringUtils.isEmpty(data.getCheckUser())) { |
| | | curData.setCheckUser(ContextUtil.getLoginUserCName()); |
| | | } |
| | | if (null == data.getCheckTime()) { |
| | | curData.setCheckTime(new Date()); |
| | | } |
| | | |
| | | String msg = inoutService.updateCheckData(curData); |
| | | |
| | | if (null != msg) { |
| | | return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), msg); |
| | | } |
| | | |
| | | return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "执行成功"); |
| | | } |
| | | |
| | | /** |
| | | * @param param |
| | | * @return |
| | |
| | | } |
| | | } |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public PageResponse<InoutCheckData> updateCheckData(InoutCheckData data) { |
| | | try { |
| | | |
| | | // 获取业务数据信息 |
| | | InoutParam param = new InoutParam(); |
| | | param.setCompanyId(data.getCompanyId()); |
| | | param.setId(data.getId()); |
| | | InoutData curData = inoutService.inoutProgressQuery(param); |
| | | if (null == curData) { |
| | | return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), |
| | | "没有获取到入库业务数据信息,更新失败", data); |
| | | } |
| | | if (InoutConstant.PROGRESS_RECORD.equals(curData.getProgress())) { |
| | | return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), |
| | | "当前流程已经结束,不支持修改"); |
| | | } |
| | | |
| | | // 更新化验项信息 |
| | | CheckUpdateResult checkResult = checkStandardManager |
| | | .updateCheckItems(data.getCheckId(), data.getCompanyId(), |
| | | data.getCheckItems()); |
| | | if (StringUtils.isNotEmpty(checkResult.getMsg())) { |
| | | return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), |
| | | "后台执行异常:" + checkResult.getMsg(), data); |
| | | } |
| | | |
| | | // 设置化验信息 |
| | | if (checkResult.getDeSum() > 0) { |
| | | data.setDeCheck(checkResult.getDeSum()); |
| | | } |
| | | if (checkResult.getAddSum() > 0) { |
| | | data.setAddCheck(checkResult.getAddSum()); |
| | | } |
| | | if (null == data.getCheckTime()) { |
| | | data.setCheckTime(new Date()); |
| | | } |
| | | curData.setCheckStatus(data.getCheckStatus()); |
| | | |
| | | // 获取系统参数配置 |
| | | InoutSysConf inoutSysConf = inoutCommonService |
| | | .getCacheInoutSysConf(data.getCompanyId(), data.getDeptId()); |
| | | if (null == inoutSysConf) { |
| | | return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), |
| | | "提示:当前库区未配置出入库流程信息,请联系管理员", data); |
| | | } |
| | | // 更新下一流程状态 |
| | | if (InoutConstant.PROGRESS_CHECK.equals(curData.getProgress())) { |
| | | curData = updateBasicInfo(curData, inoutSysConf); |
| | | // 若化验结果不合格,判断配置后续流程 |
| | | if (InoutConstant.STATUS_UNPASS |
| | | .equals(curData.getCheckStatus())) { |
| | | curData = checkNoPass(curData); |
| | | } |
| | | } |
| | | |
| | | // 化验人、化验时间 |
| | | data.setCheckStatus(curData.getCheckStatus()); |
| | | data.setProgress(curData.getProgress()); |
| | | if (StringUtils.isEmpty(data.getCheckUser())) { |
| | | data.setCheckUser(ContextUtil.getLoginUserCName()); |
| | | } |
| | | if (null == data.getCheckTime()) { |
| | | data.setCheckTime(new Date()); |
| | | } |
| | | |
| | | String msg = inoutService.updateCheckData(data); |
| | | if (null != msg) { |
| | | return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), msg); |
| | | } |
| | | |
| | | return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "执行成功"); |
| | | } catch (Exception e) { |
| | | return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), "后台异常:" |
| | | + e.getMessage(), null); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取单价信息 |