| | |
| | | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.yuanchu.mom.dto.HistoryDto; |
| | | import com.yuanchu.mom.dto.WarehouseCellAndSampleDto; |
| | | import com.yuanchu.mom.dto.WarehouseDto; |
| | | import com.yuanchu.mom.mapper.WarehouseCellMapper; |
| | | import com.yuanchu.mom.mapper.WarehouseHistoryMapper; |
| | | import com.yuanchu.mom.mapper.WarehouseMapper; |
| | | import com.yuanchu.mom.mapper.WarehouseShelfMapper; |
| | | import com.yuanchu.mom.pojo.Warehouse; |
| | | import com.yuanchu.mom.pojo.WarehouseCell; |
| | | import com.yuanchu.mom.pojo.WarehouseHistory; |
| | | import com.yuanchu.mom.pojo.WarehouseShelf; |
| | | import com.yuanchu.mom.exception.ErrorException; |
| | | import com.yuanchu.mom.mapper.*; |
| | | import com.yuanchu.mom.pojo.*; |
| | | import com.yuanchu.mom.service.WarehouseCellService; |
| | | import com.yuanchu.mom.service.WarehouseService; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @author Administrator |
| | |
| | | |
| | | private WarehouseHistoryMapper warehouseHistoryMapper; |
| | | |
| | | private WarehouseCellService warehouseCellService; |
| | | |
| | | private InsSampleMapper insSampleMapper; |
| | | |
| | | private InsProductMapper insProductMapper; |
| | | |
| | | @Override |
| | | public int addWarehouse(String name) { |
| | | Warehouse warehouse = new Warehouse(); |
| | |
| | | public int addShelf(WarehouseShelf warehouseShelf) { |
| | | warehouseShelfMapper.insert(warehouseShelf); |
| | | List<WarehouseCell> cells = new ArrayList<>(); |
| | | for (Integer i = 0; i < warehouseShelf.getRow(); i++) { |
| | | for (Integer a = 0; a < warehouseShelf.getCol(); a++) { |
| | | for (int i = 1; i < warehouseShelf.getRow() + 1; i++) { |
| | | for (int a = 1; a < warehouseShelf.getCol() + 1; a++) { |
| | | WarehouseCell cell = new WarehouseCell(); |
| | | cell.setRow(i); |
| | | cell.setCol(a); |
| | | cell.setState(1); |
| | | cell.setShelfId(warehouseShelf.getId()); |
| | | cells.add(cell); |
| | | } |
| | | } |
| | | warehouseCellMapper.saveBatch(cells); |
| | | warehouseCellService.saveBatch(cells); |
| | | return 1; |
| | | } |
| | | |
| | |
| | | public int upWarehouse(Warehouse warehouse) { |
| | | return warehouseMapper.updateById(warehouse); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int delShelf(Integer id) { |
| | | warehouseCellMapper.update(null ,Wrappers.<WarehouseCell>lambdaUpdate().eq(WarehouseCell::getShelfId, id).set(WarehouseCell::getState, 0)); |
| | | return warehouseShelfMapper.deleteById(id); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int upShelf(WarehouseShelf warehouseShelf) { |
| | | warehouseCellMapper.update(null, Wrappers.<WarehouseCell>lambdaUpdate() |
| | | .eq(WarehouseCell::getShelfId, warehouseShelf.getWarehouseId()) |
| | | .gt(WarehouseCell::getRow, warehouseShelf.getRow()) |
| | | .gt(WarehouseCell::getCol, warehouseShelf.getCol()) |
| | | .set(WarehouseCell::getState, 0)); |
| | | warehouseShelfMapper.updateById(warehouseShelf); |
| | | return 0; |
| | | } |
| | | |
| | | @Override |
| | | public List<WarehouseCellAndSampleDto> getWarehouse(Integer shelfId) { |
| | | return warehouseCellMapper.getWarehouse(shelfId); |
| | | } |
| | | |
| | | @Override |
| | | public int inWarehouse(String trees, String sampleCode) { |
| | | String[] tree = trees.split("-"); |
| | | if(tree.length < 4){ |
| | | throw new ErrorException("库位选择错误"); |
| | | } |
| | | List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getSampleCode, sampleCode).select(InsSample::getId,InsSample::getCellId)); |
| | | if(samples.size()!=1){ |
| | | throw new ErrorException("样品编号输入有误"); |
| | | } |
| | | if(samples.get(0).getCellId()!=null){ |
| | | throw new ErrorException("样品 " + sampleCode + " 未出库"); |
| | | } |
| | | WarehouseCell cell = warehouseCellMapper.selectOne(Wrappers.<WarehouseCell>lambdaQuery().eq(WarehouseCell::getShelfId, tree[1]).eq(WarehouseCell::getRow, tree[2]).eq(WarehouseCell::getCol, tree[3]).eq(WarehouseCell::getState, 1).select(WarehouseCell::getId,WarehouseCell::getRow,WarehouseCell::getCol)); |
| | | WarehouseShelf shelf = warehouseShelfMapper.selectById(tree[1]); |
| | | Warehouse warehouse = warehouseMapper.selectById(tree[0]); |
| | | WarehouseHistory history = new WarehouseHistory(); |
| | | history.setCellId(cell.getId()); |
| | | history.setState(1); |
| | | history.setInsSampleId(samples.get(0).getId()); |
| | | history.setWarehouseCode(warehouse.getName()+"-"+shelf.getName()+"-"+cell.getRow()+"-"+cell.getCol()); |
| | | samples.get(0).setCellId(cell.getId()); |
| | | insSampleMapper.updateById(samples.get(0)); |
| | | return warehouseHistoryMapper.insert(history); |
| | | } |
| | | |
| | | @Override |
| | | public int outWarehouse(String sampleCode) { |
| | | List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getSampleCode, sampleCode).select(InsSample::getId,InsSample::getCellId)); |
| | | if(samples.size()!=1){ |
| | | throw new ErrorException("样品编号输入有误"); |
| | | } |
| | | if(samples.get(0).getCellId()==null){ |
| | | throw new ErrorException("样品 " + sampleCode + " 未入库"); |
| | | } |
| | | WarehouseHistory history = new WarehouseHistory(); |
| | | history.setState(2); |
| | | history.setInsSampleId(samples.get(0).getId()); |
| | | history.setCellId(samples.get(0).getCellId()); |
| | | history.setWarehouseCode(warehouseHistoryMapper.selectOne(Wrappers.<WarehouseHistory>lambdaQuery().eq(WarehouseHistory::getInsSampleId, samples.get(0).getId()).select(WarehouseHistory::getWarehouseCode).orderByDesc(WarehouseHistory::getId).last("limit 1")).getWarehouseCode()); |
| | | insSampleMapper.update(null, Wrappers.<InsSample>lambdaUpdate().eq(InsSample::getId, samples.get(0).getId()).set(InsSample::getCellId, null)); |
| | | return warehouseHistoryMapper.insert(history); |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> getSampleRecord(Integer id) { |
| | | InsSample insSample = insSampleMapper.selectById(id); |
| | | List<HistoryDto> histories = warehouseHistoryMapper.getHistoryListBySampleId(id); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | Map<String, String> sampleHistory = new HashMap<>(); |
| | | WarehouseHistory history = histories.get(histories.size() - 1); |
| | | if(history.getState() == 1){ |
| | | sampleHistory.put("date", history.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); |
| | | sampleHistory.put("user", warehouseHistoryMapper.getUserNameById(history.getCreateUser())); |
| | | sampleHistory.put("code", history.getWarehouseCode()); |
| | | } |
| | | map.put("sampleHistory", sampleHistory); |
| | | map.put("insSample", insSample); |
| | | map.put("histories", histories); |
| | | map.put("products", insProductMapper.getProductAndResult(id)); |
| | | return map; |
| | | } |
| | | |
| | | @Override |
| | | public int searchSampleId(String sampleCode) { |
| | | List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getSampleCode, sampleCode).select(InsSample::getId)); |
| | | if(samples.size()!=1){ |
| | | throw new ErrorException("样品编号输入有误"); |
| | | } |
| | | return samples.get(0).getId(); |
| | | } |
| | | } |
| | | |
| | | |