| | |
| | | import com.fzzy.igds.constant.Constant; |
| | | import com.fzzy.igds.constant.FoodVariety; |
| | | import com.fzzy.igds.constant.RedisConst; |
| | | import com.fzzy.igds.data.IgdsBaseParam; |
| | | import com.fzzy.igds.data.InoutData; |
| | | import com.fzzy.igds.data.InoutParam; |
| | | import com.fzzy.igds.data.InoutPrintBill; |
| | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.time.DateFormatUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.scheduling.annotation.Async; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.text.DecimalFormat; |
| | |
| | | |
| | | /** |
| | | * 分页查询数据 |
| | | * |
| | | * @param page |
| | | * @param param |
| | | */ |
| | | public void listPageInout(Page<InoutRecord> page, InoutParam param) { |
| | | if(StringUtils.isBlank(param.getCompanyId())){ |
| | | if (StringUtils.isBlank(param.getCompanyId())) { |
| | | param.setCompanyId(ContextUtil.getCompanyId()); |
| | | } |
| | | if(StringUtils.isBlank(param.getDeptId())){ |
| | | if (StringUtils.isBlank(param.getDeptId())) { |
| | | param.setDeptId(ContextUtil.subDeptId(null)); |
| | | } |
| | | QueryWrapper<InoutRecord> queryWrapper = getQueryWrapper(param); |
| | |
| | | |
| | | /** |
| | | * 查询数据集合 |
| | | * |
| | | * @param param |
| | | */ |
| | | public List<InoutRecord> listInout(InoutParam param) { |
| | | if(StringUtils.isBlank(param.getCompanyId())){ |
| | | if (StringUtils.isBlank(param.getCompanyId())) { |
| | | param.setCompanyId(ContextUtil.getCompanyId()); |
| | | } |
| | | if(StringUtils.isBlank(param.getDeptId())){ |
| | | if (StringUtils.isBlank(param.getDeptId())) { |
| | | param.setDeptId(ContextUtil.subDeptId(null)); |
| | | } |
| | | QueryWrapper<InoutRecord> queryWrapper = getQueryWrapper(param); |
| | |
| | | |
| | | /** |
| | | * 封装查询条件 |
| | | * |
| | | * @param param |
| | | */ |
| | | public QueryWrapper<InoutRecord> getQueryWrapper(InoutParam param) { |
| | |
| | | queryWrapper.eq("company_id", param.getCompanyId()); |
| | | } |
| | | if (StringUtils.isNotBlank(param.getDeptId())) { |
| | | queryWrapper.eq("dept_id", param.getDeptId()); |
| | | queryWrapper.likeRight("dept_id", param.getDeptId()); |
| | | } |
| | | if (StringUtils.isNotBlank(param.getCustomerName())) { |
| | | queryWrapper.like("customer_name", param.getCustomerName()); |
| | |
| | | return queryWrapper; |
| | | } |
| | | |
| | | /** |
| | | * 根据时间类型,获取已完成的正常单据 |
| | | * @param timeType |
| | | * @param param |
| | | * @return |
| | | */ |
| | | public List<InoutRecord> getCompleteInoutByTime(String timeType, IgdsBaseParam param) { |
| | | if(StringUtils.isBlank(timeType)){ |
| | | return null; |
| | | } |
| | | |
| | | QueryWrapper<InoutRecord> queryWrapper = new QueryWrapper<>(); |
| | | |
| | | queryWrapper.likeRight("dept_id", param.getDeptId()); |
| | | queryWrapper.likeRight("progress", Constant.PROGRESS_RECORD); //已完成的单据 |
| | | queryWrapper.ne("record_status", Constant.RECORD_STATUS_DEL); //不是删除的单子,即正常的单子 |
| | | queryWrapper.ge(timeType, param.getStart()); |
| | | queryWrapper.le(timeType, param.getEnd()); |
| | | queryWrapper.orderByAsc("complete_time"); |
| | | |
| | | return inoutRecordMapper.selectList(queryWrapper); |
| | | } |
| | | |
| | | /** |
| | | * 查询数据 |
| | | * |
| | | * @param param |
| | | * @return |
| | | */ |
| | | public InoutRecord selectOne(InoutParam param) { |
| | | if(StringUtils.isBlank(param.getCompanyId())){ |
| | | if (StringUtils.isBlank(param.getCompanyId())) { |
| | | param.setCompanyId(ContextUtil.getCompanyId()); |
| | | } |
| | | QueryWrapper<InoutRecord> queryWrapper = getQueryWrapper(param); |
| | |
| | | |
| | | /** |
| | | * 验证车牌号是否在流程中 |
| | | * |
| | | * @param companyId |
| | | * @param plateNum |
| | | * @return |
| | |
| | | queryWrapper.eq("company_id", companyId); |
| | | queryWrapper.eq("plate_num", plateNum); |
| | | queryWrapper.ne("progress", Constant.PROGRESS_RECORD); |
| | | queryWrapper.eq("record_status", "NORMAL"); |
| | | queryWrapper.or(); |
| | | queryWrapper.eq("record_status", Constant.RECORD_STATUS_ADD); //补录单子的单子 |
| | | |
| | | return inoutRecordMapper.selectCount(queryWrapper); |
| | | } |
| | | |
| | | /** |
| | | * 手动补单 |
| | | * |
| | | * @param data |
| | | * @return |
| | | */ |
| | |
| | | //补单数据直接到结果状态 |
| | | data.setRecordStatus(Constant.RECORD_STATUS_ADD); |
| | | data.setProgress(Constant.PROGRESS_RECORD); |
| | | if(null != data.getPerWet() && data.getPerWet() > 0){ |
| | | if (null != data.getPerWet() && data.getPerWet() > 0) { |
| | | data.setCheckStatus(Constant.STATUS_CHECK); |
| | | } |
| | | String loginUser = ContextUtil.getLoginUserName(); |
| | |
| | | /** |
| | | * 新增出入库记录 |
| | | * |
| | | * @param list |
| | | * @return |
| | | */ |
| | | public String addInoutRecordList(List<InoutRecord> list) { |
| | | if(null == list || list.isEmpty()){ |
| | | return "新增失败"; |
| | | } |
| | | |
| | | for (InoutRecord inoutRecord : list) { |
| | | addInoutRecord(inoutRecord); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 新增出入库记录 |
| | | * |
| | | * @param data |
| | | * @return |
| | | */ |
| | |
| | | data.setId("R_" + id); |
| | | } else if (Constant.TYPE_OUT.equals(data.getType())) { |
| | | data.setId("C_" + id); |
| | | }else { |
| | | } else { |
| | | data.setId("M_" + id); |
| | | } |
| | | } |
| | |
| | | |
| | | int num = inoutRecordMapper.insert(data); |
| | | //TODO 更新缓存 |
| | | //updateInoutCache(data); |
| | | |
| | | return num; |
| | | |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | /** |
| | | * 数据修改,保留修改记录 |
| | | * @param updateData |
| | | * @return |
| | | */ |
| | | public int checkAndUpdate(InoutRecord updateData) { |
| | | |
| | | //获取原来的数据 |
| | | InoutParam param = new InoutParam(); |
| | | param.setId(updateData.getId()); |
| | | InoutRecord record = this.selectOne(param); |
| | | |
| | | String remarks = checkRemarks(updateData, record); |
| | | updateData.setRemarks(remarks); |
| | | |
| | | return updateInoutRecord(updateData); |
| | | } |
| | | |
| | | /** |
| | | * 校验修改信息 |
| | | * @param updateData 修改数据 |
| | | * @param record 原始数据 |
| | | * @return |
| | | */ |
| | | public String checkRemarks(InoutRecord updateData, InoutRecord record) { |
| | | |
| | | String remarks = "【" + ContextUtil.getLoginUserName() + "】于["+DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss")+"]修改数据:"; |
| | | |
| | | boolean updateTag = false; |
| | | //校验仓库信息 |
| | | if(null != updateData.getDepotId() && null != record.getDepotId()){ |
| | | updateTag = !updateData.getDepotId().equals(record.getDepotId()); |
| | | if(updateTag){ |
| | | remarks += "[仓库编码](" + record.getDepotId() + ")修改为(" + updateData.getDepotId() + "),"; |
| | | } |
| | | } |
| | | |
| | | //校验品种信息 |
| | | if(null != updateData.getFoodVariety() && null != record.getFoodVariety()){ |
| | | updateTag = !updateData.getFoodVariety().equals(record.getFoodVariety()); |
| | | if(updateTag){ |
| | | remarks += "[品种](" + record.getFoodVariety() + ")修改为(" + updateData.getFoodVariety() + "),"; |
| | | } |
| | | } |
| | | |
| | | //粮食产地 |
| | | if(null != updateData.getFoodLocation() && null != record.getFoodLocation()){ |
| | | updateTag = !updateData.getFoodLocation().equals(record.getFoodLocation()); |
| | | if(updateTag){ |
| | | remarks += "[粮食产地](" + record.getFoodLocation() + ")修改为(" + updateData.getFoodLocation() + "),"; |
| | | } |
| | | } |
| | | |
| | | //粮食等级 |
| | | if(null != updateData.getFoodLevel() && null != record.getFoodLevel()){ |
| | | updateTag = !updateData.getFoodLevel().equals(record.getFoodLevel()); |
| | | if(updateTag){ |
| | | remarks += "[粮食等级](" + record.getFoodLevel() + ")修改为(" + updateData.getFoodLevel() + "),"; |
| | | } |
| | | } |
| | | |
| | | //粮食年份 |
| | | if(null != updateData.getFoodYear() && null != record.getFoodYear()){ |
| | | updateTag = !updateData.getFoodYear().equals(record.getFoodYear()); |
| | | if(updateTag){ |
| | | remarks += "[粮食年份](" + record.getFoodYear() + ")修改为(" + updateData.getFoodYear() + "),"; |
| | | } |
| | | } |
| | | |
| | | //承运人 |
| | | if(null != updateData.getUserName() && null != record.getUserName()){ |
| | | updateTag = !updateData.getUserName().equals(record.getUserName()); |
| | | if(updateTag){ |
| | | remarks += "[承运人](" + record.getUserName() + ")修改为(" + updateData.getUserName() + "),"; |
| | | } |
| | | } |
| | | |
| | | //校验通知单信息 |
| | | if(null != updateData.getNoticeId() && null != record.getNoticeId()){ |
| | | updateTag = !updateData.getNoticeId().equals(record.getNoticeId()); |
| | | if(updateTag){ |
| | | remarks += "[通知单编码](" + record.getNoticeId() + ")修改为(" + updateData.getNoticeId() + "),"; |
| | | } |
| | | } |
| | | |
| | | //校验往来单位信息 |
| | | if(null != updateData.getCustomerName() && null != record.getCustomerName()){ |
| | | updateTag = !updateData.getCustomerName().equals(record.getCustomerName()); |
| | | if(updateTag){ |
| | | remarks += "[往来单位](" + record.getCustomerName() + ")修改为(" + updateData.getCustomerName() + "),"; |
| | | } |
| | | } |
| | | |
| | | //单价 |
| | | if(null != updateData.getPrice() && null != record.getPrice()){ |
| | | updateTag = !updateData.getPrice().equals(record.getPrice()); |
| | | if(updateTag){ |
| | | remarks += "[单价](" + record.getPrice() + ")修改为(" + updateData.getPrice() + "),"; |
| | | } |
| | | } |
| | | |
| | | //结算金额 |
| | | if(null != updateData.getSettleMoney() && null != record.getSettleMoney()){ |
| | | updateTag = !updateData.getSettleMoney().equals(record.getSettleMoney()); |
| | | if(updateTag){ |
| | | remarks += "[结算金额](" + record.getSettleMoney() + ")修改为(" + updateData.getSettleMoney() + "),"; |
| | | } |
| | | } |
| | | |
| | | //水分 |
| | | if(null != updateData.getPerWet() && null != record.getPerWet()){ |
| | | updateTag = !updateData.getPerWet().equals(record.getPerWet()); |
| | | if(updateTag){ |
| | | remarks += "[水分](" + record.getPerWet() + ")修改为(" + updateData.getPerWet() + "),"; |
| | | } |
| | | } |
| | | |
| | | //杂质 |
| | | if(null != updateData.getPerImpurity() && null != record.getPerImpurity()){ |
| | | updateTag = !updateData.getPerImpurity().equals(record.getPerImpurity()); |
| | | if(updateTag){ |
| | | remarks += "[杂质](" + record.getPerImpurity() + ")修改为(" + updateData.getPerImpurity() + "),"; |
| | | } |
| | | } |
| | | |
| | | //毛重 |
| | | if(null != updateData.getFullWeight() && null != record.getFullWeight()){ |
| | | updateTag = !updateData.getFullWeight().equals(record.getFullWeight()); |
| | | if(updateTag){ |
| | | remarks += "[毛重](" + record.getFullWeight() + ")修改为(" + updateData.getFullWeight() + "),"; |
| | | } |
| | | } |
| | | |
| | | //皮重 |
| | | if(null != updateData.getEmptyWeight() && null != record.getEmptyWeight()){ |
| | | updateTag = !updateData.getEmptyWeight().equals(record.getEmptyWeight()); |
| | | if(updateTag){ |
| | | remarks += "[皮重](" + record.getEmptyWeight() + ")修改为(" + updateData.getEmptyWeight() + "),"; |
| | | } |
| | | } |
| | | |
| | | //扣重 |
| | | if(null != updateData.getDeOther() && null != record.getDeOther()){ |
| | | updateTag = !updateData.getDeOther().equals(record.getDeOther()); |
| | | if(updateTag){ |
| | | remarks += "[扣重](" + record.getDeOther() + ")修改为(" + updateData.getDeOther() + "),"; |
| | | } |
| | | } |
| | | |
| | | //结算重量 |
| | | if(null != updateData.getSettleWeight() && null != record.getSettleWeight()){ |
| | | updateTag = !updateData.getSettleWeight().equals(record.getSettleWeight()); |
| | | if(updateTag){ |
| | | remarks += "[结算重量](" + record.getSettleWeight() + ")修改为(" + updateData.getSettleWeight() + "),"; |
| | | } |
| | | } |
| | | |
| | | //出入库重量 |
| | | if(null != updateData.getRecordWeight() && null != record.getRecordWeight()){ |
| | | updateTag = !updateData.getRecordWeight().equals(record.getRecordWeight()); |
| | | if(updateTag){ |
| | | remarks += "[出入库重量](" + record.getRecordWeight() + ")修改为(" + updateData.getRecordWeight() + "),"; |
| | | } |
| | | } |
| | | |
| | | //登记时间 |
| | | if(null != updateData.getRegisterTime() && null != record.getRegisterTime()){ |
| | | updateTag = !updateData.getRegisterTime().equals(record.getRegisterTime()); |
| | | if(updateTag){ |
| | | remarks += "[登记时间](" + DateFormatUtils.format(record.getRegisterTime(),"yyyy-MM-dd HH:mm:ss") + ")修改为(" + DateFormatUtils.format(updateData.getRegisterTime(),"yyyy-MM-dd HH:mm:ss") + "),"; |
| | | } |
| | | } |
| | | |
| | | //满车时间 |
| | | if(null != updateData.getFullWeightTime() && null != record.getFullWeightTime()){ |
| | | updateTag = !updateData.getFullWeightTime().equals(record.getFullWeightTime()); |
| | | if(updateTag){ |
| | | remarks += "[满车时间](" + DateFormatUtils.format(record.getFullWeightTime(),"yyyy-MM-dd HH:mm:ss") + ")修改为(" + DateFormatUtils.format(updateData.getFullWeightTime(),"yyyy-MM-dd HH:mm:ss") + "),"; |
| | | } |
| | | } |
| | | |
| | | //空车时间 |
| | | if(null != updateData.getEmptyWeightTime() && null != record.getEmptyWeightTime()){ |
| | | updateTag = !updateData.getEmptyWeightTime().equals(record.getEmptyWeightTime()); |
| | | if(updateTag){ |
| | | remarks += "[空车时间](" + DateFormatUtils.format(record.getEmptyWeightTime(),"yyyy-MM-dd HH:mm:ss") + ")修改为(" + DateFormatUtils.format(updateData.getEmptyWeightTime(),"yyyy-MM-dd HH:mm:ss") + "),"; |
| | | } |
| | | } |
| | | |
| | | //完成时间 |
| | | if(null != updateData.getCompleteTime() && null != record.getCompleteTime()){ |
| | | updateTag = !updateData.getCompleteTime().equals(record.getCompleteTime()); |
| | | if(updateTag){ |
| | | remarks += "[完成时间](" + DateFormatUtils.format(record.getCompleteTime(),"yyyy-MM-dd HH:mm:ss") + ")修改为(" + DateFormatUtils.format(updateData.getCompleteTime(),"yyyy-MM-dd HH:mm:ss") + "),"; |
| | | } |
| | | } |
| | | |
| | | //满车称重人 |
| | | if(null != updateData.getFullWeightUser() && null != record.getFullWeightUser()){ |
| | | updateTag = !updateData.getFullWeightUser().equals(record.getFullWeightUser()); |
| | | if(updateTag){ |
| | | remarks += "[满车称重人](" + record.getFullWeightUser() + ")修改为(" + updateData.getFullWeightUser() + "),"; |
| | | } |
| | | } |
| | | |
| | | //空车称重人 |
| | | if(null != updateData.getEmptyWeightUser() && null != record.getEmptyWeightUser()){ |
| | | updateTag = !updateData.getEmptyWeightUser().equals(record.getEmptyWeightUser()); |
| | | if(updateTag){ |
| | | remarks += "[空车称重人](" + record.getEmptyWeightUser() + ")修改为(" + updateData.getEmptyWeightUser() + "),"; |
| | | } |
| | | } |
| | | |
| | | //备注说明 |
| | | if(null != updateData.getRemarks() && null != record.getRemarks()){ |
| | | updateTag = !updateData.getRemarks().equals(record.getRemarks()); |
| | | if(updateTag){ |
| | | remarks += "[备注说明](" + record.getRemarks() + ")修改为(" + updateData.getRemarks() + "),"; |
| | | } |
| | | } |
| | | |
| | | if(StringUtils.isNotBlank(record.getRemarks())){ |
| | | remarks = record.getRemarks() + ";" + remarks; |
| | | } |
| | | |
| | | return remarks; |
| | | } |
| | | |
| | | /** |
| | | * 异常终止 |
| | | * |
| | | * @param data |
| | | * @return |
| | | */ |
| | |
| | | |
| | | //TODO 删除缓存 |
| | | |
| | | if(i > 0){ |
| | | if (i > 0) { |
| | | return null; |
| | | }else { |
| | | } else { |
| | | return "操作失败!"; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 出入库流程ID创建 202001030001 202001030001 |
| | | * |
| | | * @param registerTime |
| | | * @param companyId |
| | | * @return |
| | |
| | | |
| | | /** |
| | | * 查询最大id号,为空则返回null |
| | | * |
| | | * @param companyId |
| | | * @param timeKey |
| | | * @return |
| | |
| | | queryWrapper.orderByDesc("create_time"); |
| | | |
| | | List<InoutRecord> inoutRecords = inoutRecordMapper.selectList(queryWrapper); |
| | | if(null == inoutRecords || inoutRecords.isEmpty()){ |
| | | if (null == inoutRecords || inoutRecords.isEmpty()) { |
| | | return null; |
| | | }else { |
| | | } else { |
| | | return inoutRecords.get(0).getId(); |
| | | } |
| | | } |