package com.consum.base.controller;
|
|
import com.consum.base.BaseController;
|
import com.consum.base.core.CodeGeneratorEnum;
|
import com.consum.base.core.CodeGeneratorService;
|
import com.consum.base.core.WhBusinessEnum;
|
import com.consum.base.core.utils.CommonUtil;
|
import com.consum.base.core.utils.MapUtils;
|
import com.consum.base.core.utils.MapperUtil;
|
import com.consum.base.pojo.LWhFormProcureGoodsInfoParam;
|
import com.consum.base.pojo.LWhFormProcureParam;
|
import com.consum.base.pojo.LWhProcureModelParam;
|
import com.consum.base.pojo.query.FormProcureQry;
|
import com.consum.base.pojo.response.*;
|
import com.consum.base.service.*;
|
import com.consum.model.po.*;
|
import com.iplatform.model.po.S_user_core;
|
import com.walker.db.page.GenericPager;
|
import com.walker.infrastructure.utils.CollectionUtils;
|
import com.walker.infrastructure.utils.NumberGenerator;
|
import com.walker.web.ResponseValue;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiOperation;
|
import org.apache.commons.compress.utils.Lists;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.annotation.Resource;
|
import java.lang.reflect.Field;
|
import java.util.*;
|
|
/**
|
* @ClassName LWhFormProcureController
|
* @Date 2023/10/27
|
* @Description
|
* @Version 1.0
|
**/
|
@Api(value = "仓库表单采购", tags = "仓库表单采购")
|
@RestController
|
@RequestMapping("/pc/whForm/procure")
|
public class LWhFormProcureController extends BaseController {
|
|
@Resource
|
private LWhFormProcureService lWhFormProcureService;
|
@Resource
|
private BaseWarehouseServiceImpl baseWarehouseService;
|
@Resource
|
private FinSysTenantServiceImpl finSysTenantService;
|
@Resource
|
private CodeGeneratorService codeGeneratorService;
|
@Resource
|
private LWhFormProcureGoodsService lWhFormProcureGoodsService;
|
@Resource
|
private LWhFormProcureCoreService lWhFormProcureCoreService;
|
@Resource
|
private LWhGoodsService lWhGoodsService;
|
@Resource
|
private BaseGoodsTemplateServiceImpl baseGoodsTemplateService;
|
@Resource
|
private LWhProcureModelService lWhProcureModelService;
|
@Resource
|
private LOrgSupplierServiceImpl lOrgSupplierService;
|
|
/**
|
* @Description 新增
|
*/
|
@PostMapping("/add")
|
public ResponseValue add(@RequestBody LWhFormProcureParam param) {
|
Long warehouseId = param.getWarehouseId();
|
if (param.getWarehouseId() == null) {
|
return ResponseValue.error("仓库ID不能为空");
|
}
|
BaseWarehouse baseWarehouse = baseWarehouseService.getById(warehouseId);
|
FinSysTenantUser sysTenantUser = this.getSysInfo();
|
String tenantId = sysTenantUser.getTenantId();
|
String tenantName = sysTenantUser.getTenantName();
|
|
List<LWhFormProcureGoodsInfoParam> procureGoods = param.getProcureGoods();
|
if (CollectionUtils.isEmpty(procureGoods)) {
|
return ResponseValue.error("采购单不能为空");
|
}
|
|
S_user_core currentUser = this.getCurrentUser();
|
// 采购单id
|
Long whFormProcureId = param.getId();
|
if (whFormProcureId == null) {
|
whFormProcureId = NumberGenerator.getLongSequenceNumber();
|
}
|
long procureTime = Long.valueOf(param.getProcureTime());
|
|
Set<String> supplierList = new HashSet<>();
|
|
ArrayList<LWhFormProcureGoods> procureGoodList = new ArrayList<>();
|
ArrayList<LWhProcureModel> procureModelList = new ArrayList<>();
|
|
for (int i = 0; i < procureGoods.size(); i++) {
|
LWhFormProcureGoodsInfoParam procureGoodT = procureGoods.get(i);
|
Long baseCategoryId = procureGoodT.getBaseCategoryId();
|
Long baseGoodsTemplateId = procureGoodT.getBaseGoodsTemplateId();
|
String supplier = procureGoodT.getSupplier();
|
// 判断当前供应商是否已存在
|
if (!supplierList.contains(supplier) && !lOrgSupplierService.supplierIsContain(tenantId, supplier)) {
|
supplierList.add(supplier);
|
}
|
|
List<LWhProcureModelParam> models = procureGoodT.getModels();
|
if (CollectionUtils.isEmpty(models)) {
|
return ResponseValue.error("采购单不能为空");
|
}
|
LWhFormProcureGoods procureGood = new LWhFormProcureGoods();
|
long fromProcureGoodsId = NumberGenerator.getLongSequenceNumber();
|
procureGood.setId(fromProcureGoodsId);
|
procureGood.setWhFormProcureId(whFormProcureId);
|
procureGood.setBaseCategoryId(baseCategoryId);
|
procureGood.setBaseGoodsTemplateId(baseGoodsTemplateId);
|
// TODO 物品历史版本
|
procureGood.setGoodsTemplateName(procureGoodT.getGoodsTemplateName());
|
procureGood.setSupplier(supplier);
|
procureGood.setSort(i);
|
for (LWhProcureModelParam modelT : models) {
|
Integer counts = modelT.getCounts();
|
if (counts == null || counts <= 0) {
|
return ResponseValue.error("型号的采购数量只能为正整数");
|
}
|
Long price = modelT.getPrice();
|
if (price == null || price <= 0) {
|
return ResponseValue.error("型号的采购价格只能为正数");
|
}
|
Long baseGoodsModelsId = modelT.getBaseGoodsModelsId();
|
if (baseGoodsModelsId == null) {
|
return ResponseValue.error("采购的价型号未找到");
|
}
|
//查询型号信息
|
Map<String, Object> tempGoodsInfo = baseGoodsTemplateService.queryGoodsInfoByModelId(baseGoodsModelsId);
|
if (tempGoodsInfo == null) {
|
return ResponseValue.error("采购的价型号未找到");
|
}
|
String modelName = (String) tempGoodsInfo.get("modelname");
|
// 查询型号库存
|
int goodsModelNum = lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, 1, null);
|
LWhProcureModel model = new LWhProcureModel();
|
model.setId(NumberGenerator.getLongSequenceNumber());
|
model.setFromProcureGoodsId(fromProcureGoodsId);
|
model.setBusinessType(WhBusinessEnum.CAIGOU.getValue() + 0);
|
model.setBusinessId(whFormProcureId);
|
model.setBaseGoodsModelsId(baseGoodsModelsId);
|
model.setBaseGoodsModelsName(modelName);
|
model.setPrice(price);
|
model.setCounts(counts);
|
model.setWorehouseCount(goodsModelNum);
|
model.setSupplier(supplier);
|
model.setTotalAmount(price*counts);
|
procureModelList.add(model);
|
}
|
procureGoodList.add(procureGood);
|
}
|
lWhFormProcureGoodsService.insertBatch(procureGoodList);
|
lWhProcureModelService.insertBatch(procureModelList);
|
|
// 插入 采购单物品【L_WH_FORM_PROCURE_GOODS】
|
LWhFormProcure lWhFormProcure = new LWhFormProcure();
|
lWhFormProcure.setId(whFormProcureId);
|
lWhFormProcure.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.Procure_Warehouse));
|
lWhFormProcure.setWarehouseId(warehouseId);
|
lWhFormProcure.setWarehouseName(baseWarehouse.getWarehouseName());
|
lWhFormProcure.setBuyerId(currentUser.getId());
|
lWhFormProcure.setBuyerName(currentUser.getNick_name());
|
lWhFormProcure.setProcureTime(procureTime);
|
lWhFormProcure.setProcureDoc(param.getProcureDoc());
|
lWhFormProcure.setBuyType(param.getBuyType());
|
lWhFormProcure.setStates(1);
|
lWhFormProcure.setAgencyId(baseWarehouse.getAgencyId());
|
lWhFormProcure.setAgencyName(baseWarehouse.getAgencyName());
|
int result = lWhFormProcureService.insert(lWhFormProcure);
|
|
supplierList.forEach(supplier -> {
|
LOrgSupplier lOrgSupplier = new LOrgSupplier();
|
lOrgSupplier.setId(NumberGenerator.getLongSequenceNumber());
|
lOrgSupplier.setAgencyId(tenantId);
|
lOrgSupplier.setAgencyName(tenantName);
|
lOrgSupplier.setSupplier(supplier);
|
lOrgSupplierService.insert(lOrgSupplier);
|
});
|
if (result > 0) {
|
return ResponseValue.success(1);
|
}
|
return ResponseValue.error("新增失败!");
|
}
|
|
/**
|
* @Description 列表查询
|
*/
|
@ApiOperation(value = "采购单列表查询", notes = "采购单列表查询")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "param", value = "采购查询条件", required = true, dataType = "FormProcureQryDto", paramType = "query")
|
})
|
@GetMapping("/list")
|
public ResponseValue queryFormProcureList(FormProcureQry param) {
|
S_user_core currentUser = this.getCurrentUser();
|
if (currentUser == null) {
|
return ResponseValue.error("登录用户信息不存在");
|
}
|
/*当前登录人只能看到自己机构下的列表*/
|
FinSysTenantUser sysInfo = this.getSysInfo();
|
String tenantId = sysInfo.getTenantId();
|
if (param.getAgencyId() == null) {
|
param.setAgencyId(Long.valueOf(tenantId));
|
}
|
GenericPager genericPager = lWhFormProcureService.queryFormProcureList(param);
|
List<LWhFormProcure> data = genericPager.getDatas();
|
ArrayList<FormProcureVO> result = new ArrayList<>();
|
if (!CollectionUtils.isEmpty(data)) {
|
data.forEach(item -> {
|
|
FormProcureVO fromProcureVO = new FormProcureVO();
|
BeanUtils.copyProperties(item, fromProcureVO);
|
List<FromProcureTemplateInfoVO> procureTemplateInfoList = Lists.newArrayList();
|
|
// 查询型号数量
|
String sql = "select fpg.id,BASE_CATEGORY_ID ,BASE_GOODS_TEMPLATE_ID ,GOODS_TEMPLATE_NAME ,sum(counts) count "
|
+ "from L_WH_FORM_PROCURE_GOODS fpg left join L_WH_PROCURE_MODEL pm on fpg.id = pm.FROM_PROCURE_GOODS_ID "
|
+ "where fpg.WH_FORM_PROCURE_ID =:id group by pm.FROM_PROCURE_GOODS_ID";
|
Map<String, Object> paramMap = new HashMap<>();
|
paramMap.put("id", item.getId());
|
List<Map<String, Object>> procureModelList = lWhProcureModelService.select(sql, paramMap, new MapperUtil());
|
for (Map<String, Object> map : procureModelList) {
|
FromProcureTemplateInfoVO procureTemplateInfoVO = MapUtils.convertMapToObj(map, FromProcureTemplateInfoVO.class);
|
procureTemplateInfoList.add(procureTemplateInfoVO);
|
}
|
fromProcureVO.setFromProcureTemplateInfoList(procureTemplateInfoList);
|
|
result.add(fromProcureVO);
|
});
|
}
|
try {
|
Field fieldDatas = GenericPager.class.getDeclaredField("datas");
|
fieldDatas.setAccessible(true);
|
fieldDatas.set(genericPager, result);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return ResponseValue.success(genericPager);
|
}
|
|
/**
|
* @Description 编辑
|
*/
|
@PostMapping("/edit")
|
public ResponseValue edit(@RequestBody LWhFormProcureParam param) {
|
ResponseValue delFlag = delById(param.getId());
|
if (delFlag.getCode() == ResponseValue.CODE_SUCCESS) {
|
return this.add(param);
|
}
|
return ResponseValue.error("编辑失败!");
|
}
|
|
/**
|
* @Description 根据id删除
|
*/
|
@DeleteMapping("/del")
|
public ResponseValue delById(Long id) {
|
if (id == null) {
|
return ResponseValue.error("参数不能为空!");
|
}
|
LWhFormProcure lWhFormProcure = lWhFormProcureService.get(new LWhFormProcure(id));
|
if (lWhFormProcure == null) {
|
return ResponseValue.error("删除失败!");
|
}
|
if (lWhFormProcure.getStates() != 1) {
|
return ResponseValue.error("待入库状态才能删除!");
|
}
|
int num = lWhFormProcureService.delete(new LWhFormProcure(id));
|
if (num == 0) {
|
return ResponseValue.error("删除失败!");
|
}
|
lWhFormProcureGoodsService.update("delete from L_WH_FORM_PROCURE_GOODS where WH_FORM_PROCURE_ID=" + id);
|
|
lWhProcureModelService.update("delete from L_WH_PROCURE_MODEL where BUSINESS_TYPE =1 and BUSINESS_ID=" + id);
|
return ResponseValue.success(1);
|
}
|
|
/**
|
* 入库操作
|
*/
|
@PostMapping("/income")
|
public ResponseValue income(Long id) {
|
String errMsg = lWhFormProcureCoreService.doProcure(id, getCurrentUser());
|
if (errMsg == null) {
|
return ResponseValue.success();
|
}
|
return ResponseValue.error(errMsg);
|
}
|
|
/**
|
* 根据id查询详情
|
*/
|
@GetMapping("/detail")
|
public ResponseValue getById(Long id) throws IllegalAccessException {
|
if (id == null) {
|
return ResponseValue.error("采购单id为空");
|
}
|
LWhFormProcure lWhFormProcure = lWhFormProcureService.get(new LWhFormProcure(id));
|
LWhFormProcureExtendVO lWhFormProcureExtendVO = new LWhFormProcureExtendVO();
|
BeanUtils.copyProperties(lWhFormProcure, lWhFormProcureExtendVO);
|
|
// 物品
|
LWhFormProcureGoods lWhFormProcureGoods = new LWhFormProcureGoods();
|
lWhFormProcureGoods.setWhFormProcureId(id);
|
List<LWhFormProcureGoods> formProcureGoods = lWhFormProcureGoodsService.select(lWhFormProcureGoods);
|
|
Field fieldModels = null;
|
try {
|
fieldModels = LWhFormProcureGoodsVO.class.getDeclaredField("models");
|
} catch (NoSuchFieldException e) {
|
e.printStackTrace();
|
}
|
fieldModels.setAccessible(true);
|
ArrayList<LWhFormProcureGoodsVO> procureGoodsVOList = new ArrayList<>();
|
for (LWhFormProcureGoods formProcureGood : formProcureGoods) {
|
LWhFormProcureGoodsVO lWhFormProcureGoodsVO = new LWhFormProcureGoodsVO();
|
BeanUtils.copyProperties(formProcureGood, lWhFormProcureGoodsVO);
|
|
Long baseGoodsTemplateId = formProcureGood.getBaseGoodsTemplateId();
|
BaseGoodsTemplate queryEntity = new BaseGoodsTemplate();
|
queryEntity.setId(baseGoodsTemplateId);
|
BaseGoodsTemplate baseGoodsTemplate = baseGoodsTemplateService.get(queryEntity);
|
lWhFormProcureGoodsVO.setBaseCategoryName(baseGoodsTemplate.getCategoryName());
|
// 查询型号数量
|
Map<String, Object> paramMap = new HashMap<>();
|
paramMap.put("formProcureGoodId", formProcureGood.getId());
|
String sql = "SELECT\n" + "pm.BASE_GOODS_MODELS_ID,pm.BASE_GOODS_MODELS_NAME,pm.PRICE,pm.COUNTS,pm.WOREHOUSE_COUNT,bgm.unit " + "FROM\n"
|
+ "\tl_wh_procure_model pm\n"
|
+ "\tLEFT JOIN base_goods_models bgm on pm.BASE_GOODS_MODELS_ID = bgm.id where pm.FROM_PROCURE_GOODS_ID =:formProcureGoodId";
|
List<Map<String, Object>> procureModelList = lWhProcureModelService.select(sql, paramMap, new MapperUtil());
|
List<GoodsModelVO> goodsModelVOList = Lists.newArrayList();
|
procureModelList.forEach(item -> {
|
GoodsModelVO goodsModelVO = MapUtils.convertMapToObj(item, GoodsModelVO.class);
|
goodsModelVOList.add(goodsModelVO);
|
});
|
fieldModels.set(lWhFormProcureGoodsVO, goodsModelVOList);
|
procureGoodsVOList.add(lWhFormProcureGoodsVO);
|
}
|
lWhFormProcureExtendVO.setProcureGoods(procureGoodsVOList);
|
return ResponseValue.success("查询成功!", lWhFormProcureExtendVO);
|
}
|
|
|
@ApiOperation(value = "采购单明细查询", notes = "采购单明细查询")
|
@ApiImplicitParams({@ApiImplicitParam(name = "param", value = "采购单明细查询", required = true, dataType = "FormProcureQryDto", paramType = "query")})
|
@GetMapping("detail/list")
|
public ResponseValue queryFormProcureDetailList() {
|
FormProcureQry formProcureQry = CommonUtil.getObjFromReq(FormProcureQry.class);
|
S_user_core currentUser = this.getCurrentUser();
|
if (currentUser == null) {
|
return ResponseValue.error("登录用户信息不存在");
|
}
|
|
GenericPager genericPager = lWhFormProcureService.queryFormProcureDetailList(formProcureQry);
|
return ResponseValue.success(genericPager);
|
}
|
}
|