|  |  |  | 
|---|
|  |  |  | import com.ld.igds.data.Page; | 
|---|
|  |  |  | import com.ld.igds.data.PageResponse; | 
|---|
|  |  |  | import com.ld.igds.file.CoreFileService; | 
|---|
|  |  |  | import com.ld.igds.file.dto.FileData; | 
|---|
|  |  |  | import com.ld.igds.inout.InoutConstant; | 
|---|
|  |  |  | import com.ld.igds.inout.dto.InoutCheckData; | 
|---|
|  |  |  | import com.ld.igds.inout.dto.InoutCheckParam; | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.ld.igds.models.InoutSysConf; | 
|---|
|  |  |  | import com.ld.igds.util.ContextUtil; | 
|---|
|  |  |  | import com.ld.igds.util.DateUtil; | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @author | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Component | 
|---|
|  |  |  | public class InoutManager { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | private CheckStandardManager checkStandardManager; | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private InoutEventControlManager inoutEventControl; | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private CoreFileService coreFileService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 直接从数据库查询,不考虑信息状态 | 
|---|
|  |  |  | 
|---|
|  |  |  | return data; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 从缓存中获取下一流程 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | 
|---|
|  |  |  | if (null != msg) { | 
|---|
|  |  |  | return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), msg); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | data.setCompleteTime(param.getCompleteTime()); | 
|---|
|  |  |  | data.setProgress(InoutConstant.PROGRESS_RECORD); | 
|---|
|  |  |  | inoutService.updateInoutCache(data); | 
|---|
|  |  |  | // 流程完成收事件 | 
|---|
|  |  |  | inoutEventControl.onInoutComplete(data); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | data.setCompleteTime(new Date()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 注册时间比完成时间早一个小时 | 
|---|
|  |  |  | data.setRegisterTime(DateUtil.getNewByMinute(new Date(), -60)); | 
|---|
|  |  |  | data.setRegisterTime(DateUtils.addMinutes(new Date(), -80)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (StringUtils.isEmpty(data.getUserId())) { | 
|---|
|  |  |  | data.setUserId(InoutConstant.DEFAULT_ID_CARD); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (InoutConstant.TYPE_IN.equals(data.getType())) { | 
|---|
|  |  |  | if (null == data.getFullWeightTime()) { | 
|---|
|  |  |  | data.setFullWeightTime(DateUtil.getNewByMinute(new Date(), -50)); | 
|---|
|  |  |  | data.setFullWeightTime(DateUtils.addMinutes(new Date(), -50)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (null == data.getEmptyWeightTime()) { | 
|---|
|  |  |  | data.setEmptyWeightTime(DateUtil.getNewByMinute(new Date(), -10)); | 
|---|
|  |  |  | data.setEmptyWeightTime(DateUtils.addMinutes(new Date(), -10)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (data.getCompleteTime().before(data.getEmptyWeightTime())) { | 
|---|
|  |  |  | data.setEmptyWeightTime(DateUtils.addMinutes(data.getCompleteTime(), -10)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (data.getEmptyWeightTime().before(data.getFullWeightTime())) { | 
|---|
|  |  |  | data.setFullWeightTime(DateUtils.addMinutes(data.getEmptyWeightTime(), -40)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (data.getFullWeightTime().before(data.getRegisterTime())) { | 
|---|
|  |  |  | data.setRegisterTime(DateUtils.addMinutes(data.getFullWeightTime(), -30)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | data = this.updateCheckItems(data, false); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | if (null == data.getEmptyWeightTime()) { | 
|---|
|  |  |  | data.setEmptyWeightTime(DateUtil.getNewByMinute(new Date(), -50)); | 
|---|
|  |  |  | data.setEmptyWeightTime(DateUtils.addMinutes(new Date(), -50)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (null == data.getFullWeightTime()) { | 
|---|
|  |  |  | data.setFullWeightTime(DateUtil.getNewByMinute(new Date(), -10)); | 
|---|
|  |  |  | data.setFullWeightTime(DateUtils.addMinutes(new Date(), -10)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (data.getCompleteTime().before(data.getFullWeightTime())) { | 
|---|
|  |  |  | data.setFullWeightTime(DateUtils.addMinutes(data.getCompleteTime(), -10)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (data.getFullWeightTime().before(data.getEmptyWeightTime())) { | 
|---|
|  |  |  | data.setEmptyWeightTime(DateUtils.addMinutes(data.getEmptyWeightTime(), -40)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (data.getEmptyWeightTime().before(data.getRegisterTime())) { | 
|---|
|  |  |  | data.setRegisterTime(DateUtils.addMinutes(data.getFullWeightTime(), -30)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | if (InoutConstant.TYPE_IN.equals(data.getType())) { | 
|---|
|  |  |  | this.updateCheckItems(data, true); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | fileService.saveInoutFiles(data.getFiles(), data.getCompanyId(), data.getId(), null); | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | data.setCheckTime(new Date()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | curData.setCheckStatus(data.getCheckStatus()); | 
|---|
|  |  |  | curData.setFoodYear(data.getFoodYear()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 获取下一个流程状态 | 
|---|
|  |  |  | 
|---|
|  |  |  | curData.setPrice(data.getPrice()); | 
|---|
|  |  |  | curData.setRemarks(data.getRemarks()); | 
|---|
|  |  |  | curData.setCheckItems(data.getCheckItems()); | 
|---|
|  |  |  | curData.setCheckTime(data.getCheckTime()); | 
|---|
|  |  |  | curData.setDepotId(data.getDepotId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (StringUtils.isEmpty(data.getCheckUser())) { | 
|---|
|  |  |  | curData.setCheckUser(ContextUtil.getLoginUserCName()); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 质检完成触发事件 | 
|---|
|  |  |  | inoutEventControl.onInCheck(data,curProgress,nextProgress); | 
|---|
|  |  |  | inoutEventControl.onInCheck(data, curProgress, nextProgress); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "执行成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public PageResponse<InoutCheckData> submitCheckData(InoutCheckData data) throws Exception { | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 获取业务数据信息 | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | curData.setType(curData.getType()); | 
|---|
|  |  |  | curData.setFoodLevel(data.getFoodLevel()); | 
|---|
|  |  |  | curData.setFoodVariety(data.getFoodVariety()); | 
|---|
|  |  |  | curData.setPrice(data.getPrice()); | 
|---|
|  |  |  | curData.setDepotId(data.getDepotId()); | 
|---|
|  |  |  | curData.setCheckItems(data.getCheckItems()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public PageResponse<InoutCheckData> inoutDataByCheckId(InoutCheckParam param) { | 
|---|
|  |  |  | if (StringUtils.isEmpty(param.getCheckId())) { | 
|---|
|  |  |  | return new PageResponse<>(RespCodeEnum.CODE_1007.getCode(), | 
|---|
|  |  |  | "查询参数不完整,查询失败!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | InoutCheckData result; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | param.setProgress(InoutConstant.PROGRESS_CHECK); | 
|---|
|  |  |  | result = inoutService.inoutDataByCheckId(param); | 
|---|
|  |  |  | if (null == result) { | 
|---|
|  |  |  | return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(), | 
|---|
|  |  |  | "系统未查询到执行中的车辆信息", null); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return new PageResponse<>(RespCodeEnum.CODE_0000, result); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(), | 
|---|
|  |  |  | e.getMessage()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void initInoutWeight(List<InoutConf> listInoutConf, String sort) { | 
|---|
|  |  |  | inoutEventControl.initInoutWeight(listInoutConf, sort); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|