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.pojo.LWhFormProcureExtend;
|
import com.consum.base.pojo.LWhFormProcureGoodsParams;
|
import com.consum.base.pojo.LWhFormProcureParam;
|
import com.consum.base.pojo.LWhProcureModelParams;
|
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.DateUtils;
|
import com.walker.infrastructure.utils.NumberGenerator;
|
import com.walker.web.ResponseValue;
|
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
|
**/
|
@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<LWhFormProcureGoodsParams> 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 = DateUtils.getDateTimeNumber(System.currentTimeMillis());
|
|
Set<String> supplierList = new HashSet<>();
|
|
ArrayList<LWhFormProcureGoods> procureGoodList = new ArrayList<>();
|
ArrayList<LWhProcureModel> whProcureModeLlist = new ArrayList<>();
|
|
for (int i = 0; i < procureGoods.size(); i++) {
|
LWhFormProcureGoodsParams 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<LWhProcureModelParams> 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);
|
procureGood.setGoodsTemplateName(null);
|
procureGood.setSupplier(supplier);
|
procureGood.setSort(i);
|
for (LWhProcureModelParams 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, (short) 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);
|
whProcureModeLlist.add(model);
|
}
|
procureGoodList.add(procureGood);
|
}
|
lWhFormProcureGoodsService.insertBatch(procureGoodList);
|
lWhProcureModelService.insertBatch(whProcureModeLlist);
|
|
// 插入 采购单物品【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 列表查询
|
*/
|
@GetMapping("/list")
|
public ResponseValue queryFormProcureList(LWhFormProcureParam param) {
|
S_user_core currentUser = this.getCurrentUser();
|
if (currentUser == null) {
|
return ResponseValue.error("登录用户信息不存在");
|
}
|
FinSysTenantUser sysInfo = getSysInfo();
|
|
//只能查询本级 及以下机构的进货单
|
//??????
|
|
GenericPager genericPager = lWhFormProcureService.queryFormProcureList(param);
|
List<LWhFormProcure> datas = genericPager.getDatas();
|
ArrayList<LWhFormProcureExtend> newDatas = new ArrayList<>();
|
if (!CollectionUtils.isEmpty(datas)) {
|
datas.forEach(item -> {
|
// 查询型号数量
|
LWhProcureModel lWhProcureModel = new LWhProcureModel();
|
lWhProcureModel.setBusinessType(1);
|
lWhProcureModel.setBusinessId(item.getId());
|
List<LWhProcureModel> models = lWhProcureModelService.select(lWhProcureModel);
|
LWhFormProcureExtend formProcureExtend = new LWhFormProcureExtend();
|
BeanUtils.copyProperties(item, formProcureExtend);
|
formProcureExtend.setModels(models);
|
newDatas.add(formProcureExtend);
|
});
|
}
|
try {
|
Field fieldDatas = GenericPager.class.getDeclaredField("datas");
|
fieldDatas.setAccessible(true);
|
fieldDatas.set(genericPager, newDatas);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
// genericPager.setDatas(newDatas);
|
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));
|
LWhFormProcureExtend formProcureExtend = new LWhFormProcureExtend();
|
BeanUtils.copyProperties(lWhFormProcure, formProcureExtend);
|
|
// 物品
|
LWhFormProcureGoods lWhFormProcureGoods = new LWhFormProcureGoods();
|
lWhFormProcureGoods.setWhFormProcureId(id);
|
List<LWhFormProcureGoods> formProcureGoods = lWhFormProcureGoodsService.select(lWhFormProcureGoods);
|
|
Field fieldModels = null;
|
try {
|
fieldModels = LWhFormProcureGoodsParams.class.getDeclaredField("models");
|
} catch (NoSuchFieldException e) {
|
e.printStackTrace();
|
}
|
fieldModels.setAccessible(true);
|
ArrayList<LWhFormProcureGoodsParams> procureGoodsParams = new ArrayList<>();
|
for (LWhFormProcureGoods formProcureGood : formProcureGoods) {
|
LWhFormProcureGoodsParams lWhFormProcureGoodsParams = new LWhFormProcureGoodsParams();
|
BeanUtils.copyProperties(formProcureGood, lWhFormProcureGoodsParams);
|
|
// 查询型号数量
|
LWhProcureModel lWhProcureModel = new LWhProcureModel();
|
lWhProcureModel.setFromProcureGoodsId(formProcureGood.getId());
|
List<LWhProcureModel> models = lWhProcureModelService.select(lWhProcureModel);
|
fieldModels.set(lWhFormProcureGoodsParams, models);
|
procureGoodsParams.add(lWhFormProcureGoodsParams);
|
}
|
formProcureExtend.setProcureGoods(procureGoodsParams);
|
return ResponseValue.success("查询成功!", formProcureExtend);
|
}
|
}
|