package com.zy.asrs.wms.asrs.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.parser.Feature; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zy.asrs.framework.common.Cools; import com.zy.asrs.framework.common.R; import com.zy.asrs.wms.asrs.entity.*; import com.zy.asrs.wms.asrs.service.LocDetlFieldService; import com.zy.asrs.wms.asrs.service.MatFieldService; import com.zy.asrs.wms.common.annotation.OperationLog; import com.zy.asrs.wms.common.domain.BaseParam; import com.zy.asrs.wms.common.domain.KeyValVo; import com.zy.asrs.wms.common.domain.PageParam; import com.zy.asrs.wms.asrs.service.LocDetlService; import com.zy.asrs.wms.system.controller.BaseController; import com.zy.asrs.wms.utils.ExcelUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.*; @RestController @RequestMapping("/api") public class LocDetlController extends BaseController { @Autowired private LocDetlService locDetlService; @Autowired private MatFieldService matFieldService; @Autowired private LocDetlFieldService locDetlFieldService; @PreAuthorize("hasAuthority('asrs:locDetl:list')") @PostMapping("/locDetl/page") public R page(@RequestBody Map map) { // BaseParam baseParam = buildParam(map, BaseParam.class); // PageParam pageParam = new PageParam<>(baseParam, LocDetl.class); // // PageParam page = locDetlService.page(pageParam, pageParam.buildWrapper(true)); // JSONObject data = JSON.parseObject(JSON.toJSONString(page)); // // List records = page.getRecords(); // data.put("records", records); // for (LocDetl locDetl : records) { // List list = locDetlFieldService.list(new LambdaQueryWrapper().eq(LocDetlField::getDetlId, locDetl.getId())); // locDetl.syncField(list); // } BaseParam baseParam = buildParam(map, BaseParam.class); PageParam pageParam = new PageParam<>(baseParam, ViewLocDetl.class); PageParam data = locDetlService.getPage(pageParam, pageParam.buildWrapper(true)); return R.ok().add(data); } @PreAuthorize("hasAuthority('asrs:locDetl:list')") @PostMapping("/locDetl/list") public R list(@RequestBody Map map) { List list = locDetlService.getLocDetlList(map); return R.ok().add(list); } @PreAuthorize("hasAuthority('asrs:locDetl:list')") @GetMapping("/locDetl/{id}") public R get(@PathVariable("id") Long id) { return R.ok().add(locDetlService.getById(id)); } @PreAuthorize("hasAuthority('asrs:locDetl:save')") @OperationLog("批量插入库存明细") @PostMapping("/locDetl/batchAdd") public R save(@RequestBody List locDetls) { return R.ok().add(locDetls); } @PreAuthorize("hasAuthority('asrs:locDetl:save')") @OperationLog("添加库存明细") @PostMapping("/locDetl/save") public R save(@RequestBody LocDetl locDetl) { if (!locDetlService.save(locDetl)) { return R.error("添加失败"); } //插入库存明细字段 List matFields = matFieldService.list(new LambdaQueryWrapper().eq(MatField::getUnique, 1)); for (MatField matField : matFields) { LocDetlField locDetlField = new LocDetlField(); locDetlField.setDetlId(locDetl.getId()); locDetlField.setFieldId(matField.getId()); locDetlField.setName(matField.getName()); locDetlFieldService.save(locDetlField); } return R.ok("添加成功"); } @PreAuthorize("hasAuthority('asrs:locDetl:update')") @OperationLog("修改库存明细") @PostMapping("/locDetl/update") public R update(@RequestBody HashMap param) { LocDetl locDetl = JSON.parseObject(JSON.toJSONString(param), LocDetl.class, Feature.DisableCircularReferenceDetect); //设置扩展字段 setLocDetlField(param, locDetl); if (!locDetlService.updateById(locDetl)) { return R.error("修改失败"); } return R.ok("修改成功"); } @PreAuthorize("hasAuthority('asrs:locDetl:remove')") @OperationLog("删除库存明细") @PostMapping("/locDetl/remove/{ids}") public R remove(@PathVariable Long[] ids) { if (!locDetlService.removeByIds(Arrays.asList(ids))) { return R.error("删除失败"); } return R.ok("删除成功"); } @PreAuthorize("hasAuthority('asrs:locDetl:list')") @PostMapping("/locDetl/query") public R query(@RequestParam(required = false) String condition) { List vos = new ArrayList<>(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (!Cools.isEmpty(condition)) { wrapper.like(LocDetl::getId, condition); } locDetlService.page(new Page<>(1, 30), wrapper).getRecords().forEach( item -> vos.add(new KeyValVo(item.getId(), item.getId())) ); return R.ok().add(vos); } @PreAuthorize("hasAuthority('asrs:locDetl:list')") @PostMapping("/locDetl/export") public void export(@RequestBody Map map, HttpServletResponse response) throws Exception { ExcelUtil.build(ExcelUtil.create(locDetlService.list(), LocDetl.class), response); } private void setLocDetlField(HashMap param, LocDetl locDetl) { //获取扩展字段 List matFields = matFieldService.list(new LambdaQueryWrapper().eq(MatField::getFieldType, 1)); for (MatField matField : matFields) { if (param.containsKey(matField.getName())) { LocDetlField fieldValue = locDetlFieldService.getOne(new LambdaQueryWrapper() .eq(LocDetlField::getDetlId, locDetl.getId()) .eq(LocDetlField::getFieldId, matField.getId())); if (fieldValue == null) { fieldValue = new LocDetlField(); fieldValue.setDetlId(locDetl.getId()); fieldValue.setFieldId(matField.getId()); fieldValue.setName(matField.getName()); fieldValue.setValue(param.get(matField.getName()).toString()); locDetlFieldService.save(fieldValue); }else { fieldValue.setValue(param.get(matField.getName()).toString()); locDetlFieldService.updateById(fieldValue); } } } } }