cl
1 天以前 f21530d33ca23aeeba2ef073ac6b64422e4e26ca
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java
@@ -13,13 +13,16 @@
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.common.utils.FieldsUtils;
import com.vincent.rsf.server.manager.controller.params.LocToTaskParams;
import com.vincent.rsf.server.manager.entity.Loc;
import com.vincent.rsf.server.manager.entity.LocItem;
import com.vincent.rsf.server.manager.entity.ViewStockManage;
import com.vincent.rsf.server.manager.enums.TaskResouceType;
import com.vincent.rsf.server.manager.service.LocItemService;
import com.vincent.rsf.server.manager.service.LocService;
import com.vincent.rsf.server.system.controller.BaseController;
import com.vincent.rsf.server.manager.enums.LocStsType;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@@ -40,16 +43,43 @@
    public R page(@RequestBody Map<String, Object> map) {
        BaseParam baseParam = buildParam(map, BaseParam.class);
        PageParam<LocItem, BaseParam> pageParam = new PageParam<>(baseParam, LocItem.class);
        // 库位状态筛选:关联 man_loc,不能作为 man_loc_item 字段参与 buildWrapper
        Object useStatus = map.get("useStatus");
        Object barcodeFilter = map.get("barcode");
        if (pageParam.getWhere() != null && pageParam.getWhere().getMap() != null) {
            pageParam.getWhere().getMap().remove("useStatus");
            pageParam.getWhere().getMap().remove("barcode");
        }
        QueryWrapper<LocItem> wrapper = pageParam.buildWrapper(true);
        if (useStatus != null && StringUtils.isNotBlank(useStatus.toString())) {
            wrapper.apply("EXISTS (SELECT 1 FROM man_loc ml WHERE ml.id = man_loc_item.loc_id AND ml.use_status = {0} AND ml.deleted = 0)",
                    useStatus.toString().trim());
        }
        if (barcodeFilter != null && StringUtils.isNotBlank(barcodeFilter.toString())) {
            wrapper.apply("EXISTS (SELECT 1 FROM man_loc ml WHERE ml.id = man_loc_item.loc_id AND ml.barcode = {0} AND ml.deleted = 0)",
                    barcodeFilter.toString().trim());
        }
        FieldsUtils.setFieldsFilters(wrapper, pageParam, LocItem.class);
        /**拼接扩展字段*/
        PageParam<LocItem, BaseParam> page = locItemService.page(pageParam, pageParam.buildWrapper(true));
        PageParam<LocItem, BaseParam> page = locItemService.page(pageParam, wrapper);
        List<LocItem> records = page.getRecords();
        for (LocItem record : records) {
            if (!Objects.isNull(record.getFieldsIndex())) {
                Map<String, String> fields = FieldsUtils.getFields(record.getFieldsIndex());
                record.setExtendFields(fields);
            }
            // 填充库位状态,便于列表展示
            if (record.getLocId() != null) {
                Loc loc = locService.getById(record.getLocId());
                if (loc != null) {
                    record.setLocUseStatus(loc.getUseStatus());
                    record.setLocUseStatus$(loc.getUseStatus$());
                    record.setBarcode(loc.getBarcode());
                }
            }
        }
        locItemService.fillSpecModelFromMatnrForRecords(records);
        page.setRecords(records);
        return R.ok().add(page);
@@ -60,15 +90,18 @@
    public R locUseOPage(@RequestBody Map<String, Object> map) {
        BaseParam baseParam = buildParam(map, BaseParam.class);
        PageParam<LocItem, BaseParam> pageParam = new PageParam<>(baseParam, LocItem.class);
        Object barcodeFilter = map.get("barcode");
        if (pageParam.getWhere() != null && pageParam.getWhere().getMap() != null) {
            pageParam.getWhere().getMap().remove("barcode");
        }
        QueryWrapper<LocItem> locItemQueryWrapper = pageParam.buildWrapper(true);
        String applySql = String.format(
                "EXISTS (SELECT 1 FROM man_loc ml " +
                        "WHERE ml.use_status = '%s'" +
                        "AND ml.id = man_loc_item.loc_id " +
                        ")",
                LocStsType.LOC_STS_TYPE_F.type
        );
        locItemQueryWrapper.apply(applySql);
        if (barcodeFilter != null && StringUtils.isNotBlank(barcodeFilter.toString())) {
            locItemQueryWrapper.apply("EXISTS (SELECT 1 FROM man_loc ml WHERE ml.id = man_loc_item.loc_id AND ml.barcode = {0} AND ml.deleted = 0)",
                    barcodeFilter.toString().trim());
        }
        locItemQueryWrapper.apply(
                "EXISTS (SELECT 1 FROM man_loc ml WHERE ml.use_status = {0} AND ml.id = man_loc_item.loc_id AND ml.deleted = 0)",
                LocStsType.LOC_STS_TYPE_F.type);
        /**拼接扩展字段*/
        PageParam<LocItem, BaseParam> page = locItemService.page(pageParam, locItemQueryWrapper);
        List<LocItem> records = page.getRecords();
@@ -77,7 +110,16 @@
                Map<String, String> fields = FieldsUtils.getFields(record.getFieldsIndex());
                record.setExtendFields(fields);
            }
            if (record.getLocId() != null) {
                Loc loc = locService.getById(record.getLocId());
                if (loc != null) {
                    record.setLocUseStatus(loc.getUseStatus());
                    record.setLocUseStatus$(loc.getUseStatus$());
                    record.setBarcode(loc.getBarcode());
                }
            }
        }
        locItemService.fillSpecModelFromMatnrForRecords(records);
        page.setRecords(records);
        return R.ok().add(page);