package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.core.common.Cools; import com.core.common.R; import com.zy.asrs.entity.InventoryFlowDto; import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.WrkMastLog; import com.zy.asrs.mapper.WrkMastLogMapper; import com.zy.asrs.service.LocMastService; import com.zy.asrs.service.WrkMastLogService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; import java.util.Map; @Service("wrkMastLogService") public class WrkMastLogServiceImpl extends ServiceImpl implements WrkMastLogService { @Autowired private LocMastService locMastService; @Override public boolean insert(WrkMastLog entity) { fillAreaId(entity); return super.insert(entity); } @Override public boolean save(Integer workNo) { return this.baseMapper.save(workNo) > 0; } @Override public Long sumCostTimeByWrkSts(Date startTime, Date endTime, Integer wrkSts) { Long total = this.baseMapper.sumCostTimeByWrkSts(startTime, endTime, wrkSts); return total == null ? 0L : total; } @Override public Long countInboundHistoryBySourceStaNo(Date startTime, Date endTime, Integer sourceStaNo) { if (sourceStaNo == null) { return 0L; } Long count = this.baseMapper.countInboundHistoryBySourceStaNo(startTime, endTime, sourceStaNo); return count == null ? 0L : count; } @Override public R inventoryFlowList(Integer curr, Integer limit, Map param) { Page page = new Page<>(); page.setCurrent(curr); page.setSize(limit); page.setTotal(this.baseMapper.inventoryFlowListCount(param)); page.setRecords(this.baseMapper.inventoryFlowList(curr, limit, param)); return R.ok(page); } private void fillAreaId(WrkMastLog wrkMastLog) { if (wrkMastLog == null) { return; } LocMast locMast = resolveAreaLocMast(wrkMastLog); if (locMast != null) { wrkMastLog.setAreaId(locMast.getAreaId()); } } private LocMast resolveAreaLocMast(WrkMastLog wrkMastLog) { boolean outbound = wrkMastLog.getIoType() != null && wrkMastLog.getIoType() >= 100; LocMast primary = outbound ? selectLocMast(wrkMastLog.getSourceLocNo()) : selectLocMast(wrkMastLog.getLocNo()); if (primary != null) { return primary; } return outbound ? selectLocMast(wrkMastLog.getLocNo()) : selectLocMast(wrkMastLog.getSourceLocNo()); } private LocMast selectLocMast(String locNo) { if (Cools.isEmpty(locNo)) { return null; } return locMastService.selectById(locNo); } }