package com.vincent.rsf.server.api.controller.mcp;
|
|
import com.alibaba.fastjson.JSONArray;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.vincent.rsf.framework.common.Cools;
|
import com.vincent.rsf.framework.common.R;
|
import com.vincent.rsf.server.common.constant.Constants;
|
import com.vincent.rsf.server.common.domain.BaseParam;
|
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.DeviceSite;
|
import com.vincent.rsf.server.manager.entity.LocItem;
|
import com.vincent.rsf.server.manager.enums.LocStsType;
|
import com.vincent.rsf.server.manager.service.DeviceSiteService;
|
import com.vincent.rsf.server.manager.service.LocItemService;
|
import com.vincent.rsf.server.system.controller.BaseController;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Objects;
|
|
@RestController
|
@RequestMapping("/mcp")
|
@Api(tags = "mcp接口")
|
public class McpController extends BaseController {
|
|
@Autowired
|
private LocItemService locItemService;
|
@Autowired
|
private DeviceSiteService deviceSiteService;
|
|
|
@PostMapping("/locItem/useF/list")
|
public R locUseOPage(@RequestBody Map<String, Object> map) {
|
QueryWrapper<LocItem> locItemQueryWrapper = new QueryWrapper<>();
|
if (null != map.get("matnr") && !Cools.isEmpty(map.get("matnr"))){
|
locItemQueryWrapper.eq("matnr_code", map.get("matnr"));
|
}else {
|
return R.error("物料编码为空");
|
}
|
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);
|
List<LocItem> locItems = locItemService.list(locItemQueryWrapper);
|
for (LocItem locItem : locItems) {
|
if (!Objects.isNull(locItem.getFieldsIndex())) {
|
Map<String, String> fields = FieldsUtils.getFields(locItem.getFieldsIndex());
|
locItem.setExtendFields(fields);
|
}
|
}
|
return R.ok().add(locItems);
|
}
|
|
|
@PostMapping("/selectStaList/list")
|
public R selectStaList(@RequestBody Map<String, Object> map) {
|
List<String> longs = null;
|
if (map.get("type") != null) {
|
longs = JSONArray.parseArray(map.get("type").toString(), String.class);
|
map.entrySet().removeIf(next -> next.getKey().equals("type"));
|
}
|
List<DeviceSite> list = deviceSiteService.list(new LambdaQueryWrapper<DeviceSite>().in(DeviceSite::getType, longs));
|
return R.ok().add(list);
|
}
|
|
@ApiOperation("生成库存出库任务")
|
@PostMapping("/generate/task")
|
public R generateTask(@RequestBody LocToTaskParams param) {
|
if (Objects.isNull(param)) {
|
return R.error("参数不能为空!!");
|
}
|
param.setType(Constants.TASK_TYPE_OUT_STOCK);
|
|
try {
|
locItemService.generateTask(param, getLoginUserId());
|
} catch (Exception e) {
|
throw new RuntimeException(e);
|
}
|
|
return R.ok();
|
}
|
|
|
|
}
|