package com.zy.asrs.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.ManagerAuth; import com.core.common.R; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.BasOutArea; import com.zy.asrs.entity.BasOutStationArea; import com.zy.asrs.entity.BasStation; import com.zy.asrs.service.BasDevpService; import com.zy.asrs.service.BasOutAreaService; import com.zy.asrs.service.BasOutStationAreaService; import com.zy.asrs.service.BasStationService; import com.zy.common.web.BaseController; import com.zy.core.model.StationObjModel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @RestController @RequestMapping("/basOutStationArea") public class BasOutStationAreaController extends BaseController { @Autowired private BasOutAreaService basOutAreaService; @Autowired private BasOutStationAreaService basOutStationAreaService; @Autowired private BasDevpService basDevpService; @Autowired private BasStationService basStationService; @RequestMapping("/data/auth") @ManagerAuth public R data() { Map data = new HashMap<>(); List stationIds = new ArrayList<>(); List devps = basDevpService.selectList(new EntityWrapper().eq("status", 1)); for (BasDevp devp : devps) { for (StationObjModel stationObjModel : devp.getOutStationList$()) { stationIds.add(stationObjModel.getStationId()); } } List stations = stationIds.isEmpty() ? new ArrayList<>() : basStationService.selectList(new EntityWrapper().in("station_id", stationIds)); data.put("stations", stations); List areas = basOutAreaService.selectList(new EntityWrapper<>()); data.put("areas", areas); List relations = basOutStationAreaService.selectList(new EntityWrapper<>()); data.put("relations", relations); return R.ok(data); } @RequestMapping("/save/auth") @ManagerAuth public R save(@RequestBody JSONObject payload) { JSONArray areas = payload.getJSONArray("areas"); JSONArray relations = payload.getJSONArray("relations"); basOutAreaService.delete(new EntityWrapper<>()); basOutStationAreaService.delete(new EntityWrapper<>()); if (areas != null && !areas.isEmpty()) { List areaList = new ArrayList<>(); for (int i = 0; i < areas.size(); i++) { JSONObject o = areas.getJSONObject(i); BasOutArea a = new BasOutArea(); a.setAreaCode(o.getString("areaCode")); a.setAreaName(o.getString("areaName")); areaList.add(a); } if (!areaList.isEmpty()) { basOutAreaService.insertBatch(areaList); } } if (relations != null && !relations.isEmpty()) { List relList = new ArrayList<>(); for (int i = 0; i < relations.size(); i++) { JSONObject o = relations.getJSONObject(i); BasOutStationArea r = new BasOutStationArea(); r.setStationId(o.getInteger("stationId")); r.setAreaCode(o.getString("areaCode")); relList.add(r); } if (!relList.isEmpty()) { basOutStationAreaService.insertBatch(relList); } } return R.ok(); } }