package com.consum.base.controller; import cn.hutool.core.convert.Convert; import com.consum.base.BaseController; import com.consum.base.core.utils.CommonUtil; import com.consum.base.pojo.WhWarningConfigParam; import com.consum.base.pojo.query.WhWarningConfigQry; import com.consum.base.service.BaseWarehouseServiceImpl; import com.consum.base.service.LWhWarningConfigServiceImpl; import com.consum.model.po.BaseWarehouse; import com.consum.model.po.FinSysTenantUser; import com.consum.model.po.WhWarningConfig; import com.fasterxml.jackson.databind.ObjectMapper; import com.walker.db.page.GenericPager; import com.walker.infrastructure.utils.NumberGenerator; import com.walker.web.ResponseValue; import io.swagger.annotations.Api; import org.apache.commons.lang3.StringUtils; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * @ClassName LWhWarningConfigController * @Author cy * @Date 2023/11/20 * @Description * @Version 1.0 **/ @RestController @RequestMapping("/pc/warehouse/warningConfig") @Api(value = "库存阀值", tags = "库存阀值") public class LWhWarningConfigController extends BaseController { @Resource private LWhWarningConfigServiceImpl lWhWarningConfigService; @Resource private BaseWarehouseServiceImpl baseWarehouseService; private ObjectMapper mapper = new ObjectMapper(); /** * @Description 新增 */ @PostMapping("/add") public ResponseValue add() throws Exception { WhWarningConfigParam param = CommonUtil.getObjFromReqBody(WhWarningConfigParam.class); String modelConfigStr = param.getModelConfigStr(); Long baseWarehouseId = param.getBaseWarehouseId(); Long baseGoodsTemplateId = param.getBaseGoodsTemplateId(); if (param.getWarehouseType() == null || baseWarehouseId == null || baseGoodsTemplateId == null || StringUtils.isEmpty(modelConfigStr)) { return ResponseValue.error("缺少必要参数"); } /*当前登录人只能看到自己机构下的列表*/ FinSysTenantUser sysInfo = this.getSysInfo(); if (sysInfo == null) { return ResponseValue.error("登录用户信息不存在"); } String tenantId = sysInfo.getTenantId(); BaseWarehouse baseWarehouse = baseWarehouseService.getById(baseWarehouseId); if (baseWarehouse == null) { return ResponseValue.error("仓库不存在!"); } Long warehouseAgencyId = baseWarehouse.getAgencyId(); if (warehouseAgencyId == null || !warehouseAgencyId.toString().startsWith(tenantId)) { return ResponseValue.error("操作失败!"); } List> list = mapper.readValue(modelConfigStr, List.class); if (CollectionUtils.isEmpty(list)) { return ResponseValue.error("缺少必要参数"); } WhWarningConfig queryIsExist = new WhWarningConfig(); queryIsExist.setWarehouseType(0); queryIsExist.setBaseGoodsModelsId(baseWarehouseId); ArrayList configArrayList = new ArrayList<>(list.size()); for (Map item : list) { Long baseGoodsModelsId = Convert.toLong(item.get("baseGoodsModelsId")); queryIsExist.setBaseGoodsModelsId(baseGoodsModelsId); List containWarningConfig = lWhWarningConfigService.select(queryIsExist); if (!CollectionUtils.isEmpty(containWarningConfig)) { return ResponseValue.error("记录已存在!"); } Long lowerLimit = Convert.toLong(item.get("lowerLimit")); Long upperLimit = Convert.toLong(item.get("upperLimit")); if (lowerLimit == null && lowerLimit == null) { return ResponseValue.error("库存上限、下限不能全为空!"); } if (upperLimit != null && upperLimit < 0){ return ResponseValue.error("库存限制不能小于0!"); } if (lowerLimit != null && lowerLimit < 0){ return ResponseValue.error("库存限制不能小于0!"); } if (upperLimit != null && lowerLimit != null && upperLimit < lowerLimit) { return ResponseValue.error("库存上限不能小于下限!"); } WhWarningConfig whWarningConfig = new WhWarningConfig(); whWarningConfig.setId(NumberGenerator.getLongSequenceNumber()); whWarningConfig.setWarehouseType(0); whWarningConfig.setBaseWarehouseId(baseWarehouseId); whWarningConfig.setBaseGoodsTemplateId(baseGoodsTemplateId); whWarningConfig.setBaseGoodsModelsId(baseGoodsModelsId); if (whWarningConfig.getBaseGoodsModelsId() == null) { whWarningConfig.setGoodsType(1); } else { whWarningConfig.setGoodsType(2); } configArrayList.add(whWarningConfig); } int flag = lWhWarningConfigService.insertBatch(configArrayList); return flag > 0 ? ResponseValue.success(1) : ResponseValue.error("操作失败!"); } /** * @Description 修改 */ @PostMapping("/upd") public ResponseValue upd() { WhWarningConfig param = CommonUtil.getObjFromReqBody(WhWarningConfig.class); if (param.getId() == null || (param.getUpperLimit() == null && param.getLowerLimit() == null)) { return ResponseValue.error("库存上限、下限不能全为空!"); } if (param.getUpperLimit() != null && param.getLowerLimit() != null && param.getUpperLimit() < param.getLowerLimit()) { return ResponseValue.error("库存上限不能小于下限!"); } // 更新 int flag = lWhWarningConfigService.save(param); return flag > 0 ? ResponseValue.success(1) : ResponseValue.error("操作失败!"); } @DeleteMapping("del") public ResponseValue delById() { WhWarningConfig param = CommonUtil.getObjFromReqBody(WhWarningConfig.class); if (param.getId() == null) { return ResponseValue.error("id为空"); } int num = baseWarehouseService.delete(param); return num > 0 ? ResponseValue.success(1) : ResponseValue.error("删除失败!"); } @GetMapping("/getList") public ResponseValue getConfigList() { WhWarningConfigQry param = CommonUtil.getObjFromReq(WhWarningConfigQry.class); /*当前登录人只能看到自己机构下的列表*/ FinSysTenantUser sysInfo = this.getSysInfo(); String tenantId = sysInfo.getTenantId(); Long paramAgencyId = param.getAgencyId(); if (paramAgencyId == null || !paramAgencyId.toString().startsWith(tenantId)) { param.setAgencyId(Long.valueOf(tenantId)); } GenericPager> genericPager = lWhWarningConfigService.getConfigListWithPage(param); return ResponseValue.success(genericPager); } @GetMapping("/getById") public ResponseValue getById() { WhWarningConfig param = CommonUtil.getObjFromReq(WhWarningConfig.class); WhWarningConfig whWarningConfig = lWhWarningConfigService.get(param); return ResponseValue.success(whWarningConfig); } @GetMapping("/getConfigList") public ResponseValue getConfigList(WhWarningConfig param) { if (param.getBaseWarehouseId() == null || param.getWarehouseType() == null || (param.getBaseGoodsModelsId() == null || param.getBaseGoodsTemplateId() == null)) { return ResponseValue.error("缺少必要参数"); } return ResponseValue.success(lWhWarningConfigService.select(param)); } }