package com.consum.base.service.impl;
|
|
import static com.walker.db.Sorts.DESC;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Objects;
|
import java.util.stream.Collectors;
|
|
import org.apache.commons.compress.utils.Lists;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
import org.springframework.util.CollectionUtils;
|
|
import com.consum.base.core.CodeGeneratorEnum;
|
import com.consum.base.core.CodeGeneratorService;
|
import com.consum.base.core.type.CategoryType;
|
import com.consum.base.core.type.StatesType;
|
import com.consum.base.core.type.TransferBusinessType;
|
import com.consum.base.core.type.TransferStatesType;
|
import com.consum.base.core.type.WareHouseType;
|
import com.consum.base.core.utils.CurrencyUtil;
|
import com.consum.base.core.utils.IdUtil;
|
import com.consum.base.core.utils.MapUtils;
|
import com.consum.base.core.utils.MapperUtil;
|
import com.consum.base.pojo.LWhFormTransferGoodsInfoParam;
|
import com.consum.base.pojo.LWhProcureModelUserParam;
|
import com.consum.base.pojo.LWhTransferModelParam;
|
import com.consum.base.pojo.dto.GoodModelInfoDTO;
|
import com.consum.base.pojo.excel.TransferExcelTemplate;
|
import com.consum.base.pojo.query.TransferQry;
|
import com.consum.base.pojo.request.LWhFormTransferParam;
|
import com.consum.base.pojo.response.DepartGoodsUseInfo;
|
import com.consum.base.pojo.response.GoodsModelVO;
|
import com.consum.base.pojo.response.GoodsTemplateInfoVO;
|
import com.consum.base.pojo.response.LWHFromTransferExtendVO;
|
import com.consum.base.service.BaseWarehouseManagerService;
|
import com.consum.base.service.BaseWarehouseService;
|
import com.consum.base.service.FinSysTenantService;
|
import com.consum.base.service.LWhFormTransferService;
|
import com.consum.base.service.LWhGoodsService;
|
import com.consum.base.service.LWhProcureModelService;
|
import com.consum.base.service.LWhProcureModelUserRecordService;
|
import com.consum.base.service.LWhProcureModelUserService;
|
import com.consum.model.po.BaseWarehouse;
|
import com.consum.model.po.BaseWarehouseManager;
|
import com.consum.model.po.FinSysTenant;
|
import com.consum.model.po.FinSysTenantUser;
|
import com.consum.model.po.LWhFormTransfer;
|
import com.consum.model.po.LWhProcureModel;
|
import com.consum.model.po.LWhProcureModelUser;
|
import com.consum.model.po.LWhProcureModelUserRecord;
|
import com.walker.db.page.GenericPager;
|
import com.walker.infrastructure.utils.DateUtils;
|
import com.walker.infrastructure.utils.StringUtils;
|
import com.walker.jdbc.service.BaseServiceImpl;
|
|
/**
|
* @Description 调拨管理
|
* @Author 卢庆阳
|
* @Date 2023/10/30
|
*/
|
@Service
|
public class LWhFormTransferServiceImpl extends BaseServiceImpl implements LWhFormTransferService {
|
|
@Autowired
|
private BaseWarehouseService baseWarehouseService;
|
@Autowired
|
private CodeGeneratorService codeGeneratorService;
|
@Autowired
|
private FinSysTenantService finSysTenantService;
|
@Autowired
|
private LWhGoodsService lWhGoodsService;
|
@Autowired
|
private LWhProcureModelService lWhProcureModelService;
|
@Autowired
|
private BaseGoodsModelsServiceImpl baseGoodsModelsService;
|
@Autowired
|
private LWhProcureModelUserService lWhProcureModelUserService;
|
@Autowired
|
private LWhProcureModelUserRecordService lWhProcureModelUserRecordService;
|
@Autowired
|
private BaseWarehouseManagerService baseWarehouseManagerService;
|
|
private static final String QUERY_FORM_TRANSFER_LIST = "SELECT DISTINCT ft.* FROM l_wh_form_transfer ft "
|
+ "left join L_WH_PROCURE_MODEL pm on pm.BUSINESS_ID = ft.id "
|
+ "LEFT JOIN BASE_GOODS_MODELS bgm ON pm.BASE_GOODS_MODELS_ID=bgm.ID "
|
+ "LEFT JOIN BASE_GOODS_TEMPLATE bgt ON bgm.GOODS_TEMPLATES_ID=bgt.id WHERE 1 = 1 ";
|
|
/**
|
* @Description 新增
|
* @Author 卢庆阳
|
* @Date 2023/10/30
|
*/
|
@Transactional(rollbackFor = Exception.class)
|
public long add(LWhFormTransferParam param, FinSysTenantUser sysInfo,boolean isHaveDoc) throws Exception {
|
// 1.新增调拨单记录
|
LWhFormTransfer lWhFormTransfer = new LWhFormTransfer();
|
// 调拨单id
|
long lWhFormTransferId = IdUtil.generateId();
|
lWhFormTransfer.setId(lWhFormTransferId);
|
|
Integer businessType = param.getTransferBusinessType();
|
// 单据类型。0仓库调拨;1部门分发
|
lWhFormTransfer.setBusinessType(businessType);
|
CodeGeneratorEnum codeGeneratorEnum = null;
|
if (businessType == TransferBusinessType.STOCK_TRANSFER.getValue()) {
|
codeGeneratorEnum = CodeGeneratorEnum.Transfer;
|
} else if (businessType == TransferBusinessType.DEPARTMENT_PROCURE.getValue()) {
|
codeGeneratorEnum = CodeGeneratorEnum.Distribute;
|
}
|
|
lWhFormTransfer.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(codeGeneratorEnum));
|
|
// 调拨类型单据
|
if (businessType == TransferBusinessType.STOCK_TRANSFER.getValue()) {
|
// 入库仓库为当前用户的默认仓库中的第一个
|
String tenantId = sysInfo.getTenantId();
|
String tenantName = sysInfo.getTenantName();
|
BaseWarehouse warehouse = baseWarehouseService.getWarehouseByAgencyId(Long.valueOf(tenantId), null);
|
if (warehouse == null) {
|
log.error("仓库不存在");
|
//throw new Exception("仓库不存在");
|
return -2L;
|
}
|
lWhFormTransfer.setInWarehouseId(warehouse.getId());
|
lWhFormTransfer.setInWarehouseName(warehouse.getWarehouseName());
|
lWhFormTransfer.setInAgencyId(Long.valueOf(tenantId));
|
lWhFormTransfer.setInAgencyName(tenantName);
|
}
|
// 当业务类型为部门分发时 添加部门分发记录和使用人
|
if (businessType == TransferBusinessType.DEPARTMENT_PROCURE.getValue()) {
|
// 部门分发类型 出库仓库类型0机构1部门
|
// 从当前登录库管人从库中出库,入到所选部门的下
|
|
// 查询库管员信息和相关仓库
|
Long sysUserId = sysInfo.getSysUserId();
|
BaseWarehouseManager manager = new BaseWarehouseManager();
|
manager.setManagerId(sysUserId);
|
List<BaseWarehouseManager> managerList = baseWarehouseManagerService.select(manager);
|
if (CollectionUtils.isEmpty(managerList)) {
|
log.error("该用户不是库管员");
|
//throw new Exception("该用户不是库管员");
|
return -1L;
|
}
|
BaseWarehouseManager baseWarehouseManager = managerList.stream().findFirst().orElse(null);
|
Long baseWarehouseId = baseWarehouseManager.getBaseWarehouseId();
|
BaseWarehouse baseWarehouse = new BaseWarehouse();
|
baseWarehouse.setId(baseWarehouseId);
|
BaseWarehouse warehouse = baseWarehouseService.get(baseWarehouse);
|
|
lWhFormTransfer.setInWarehouseType(WareHouseType.DEPARTMENT.getValue());
|
lWhFormTransfer.setInWarehouseId(param.getDepartmentId());
|
lWhFormTransfer.setInWarehouseName(param.getDepartmentName());
|
lWhFormTransfer.setInOperatorName(param.getOperatorName());
|
|
if(!isHaveDoc){
|
lWhFormTransfer.setInTime(param.getCreateTime());
|
}
|
|
|
lWhFormTransfer.setOutWarehouseType(WareHouseType.TENANT.getValue());
|
lWhFormTransfer.setOutWarehouseId(warehouse.getId());
|
lWhFormTransfer.setOutWarehouseName(warehouse.getWarehouseName());
|
|
lWhFormTransfer.setOutOperatorId(sysInfo.getId());
|
lWhFormTransfer.setOutOperatorName(sysInfo.getUserName());
|
|
if(!isHaveDoc) {
|
lWhFormTransfer.setOutputTime(param.getCreateTime());
|
}
|
lWhFormTransfer.setTel(param.getTel());
|
|
}
|
|
// 根据机构id查询调拨机构
|
FinSysTenant finSysTenant = finSysTenantService.get(new FinSysTenant(param.getOutAgencyId()));
|
if (finSysTenant == null) {
|
log.error("调拨机构不存在");
|
throw new Exception("调拨机构不存在");
|
}
|
Long outAgencyId = finSysTenant.getId();
|
lWhFormTransfer.setOutAgencyId(outAgencyId);
|
lWhFormTransfer.setOutAgencyName(finSysTenant.getName());
|
lWhFormTransfer.setOperatorId(sysInfo.getId());
|
lWhFormTransfer.setOperatorName(sysInfo.getUserName());
|
lWhFormTransfer.setCreateTime(param.getCreateTime());
|
// 0=待出库;1=待接收;2=已入库库:4=已撤销
|
lWhFormTransfer.setStates(TransferStatesType.OUT_PENDING.getValue());
|
lWhFormTransfer.setProcureDoc(param.getProcureDoc());
|
|
int flag1 = this.insert(lWhFormTransfer);
|
if (flag1 == 0) {
|
log.error("新增调拨单失败");
|
}
|
|
// 2.新增物品型号记录
|
List<LWhFormTransferGoodsInfoParam> transferGoods = param.getTransferGoods();
|
List<LWhProcureModel> modelList = new ArrayList<>();
|
|
// 判断添加一次使用人记录
|
List<LWhFormTransferGoodsInfoParam> recordType = transferGoods.stream()
|
.filter(
|
item -> businessType == TransferBusinessType.DEPARTMENT_PROCURE.getValue() && item.getModels().stream()
|
.anyMatch(model -> baseGoodsModelsService.queryGoodsModelInfo(model.getBaseGoodsModelsId()).stream()
|
.findFirst().orElse(null).get("type").equals(CategoryType.TYPE_A.getValue())))
|
.collect(Collectors.toList());
|
LWhProcureModelUserRecord lWhProcureModelUserRecord = new LWhProcureModelUserRecord();
|
if (!CollectionUtils.isEmpty(recordType)) {
|
lWhProcureModelUserRecord.setId(IdUtil.generateId());
|
lWhProcureModelUserRecord.setTransBusinessId(lWhFormTransferId);
|
lWhProcureModelUserRecord.setOperatorId(sysInfo.getId());
|
lWhProcureModelUserRecord.setOperatorName(sysInfo.getUserName());
|
lWhProcureModelUserRecord.setDealTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
|
lWhProcureModelUserRecordService.insert(lWhProcureModelUserRecord);
|
}
|
for (LWhFormTransferGoodsInfoParam transferGoodsInfo : transferGoods) {
|
for (LWhTransferModelParam model : transferGoodsInfo.getModels()) {
|
LWhProcureModel lWhProcureModel = new LWhProcureModel();
|
lWhProcureModel.setId(IdUtil.generateId());
|
// 调拨业务类型转换到物品类型
|
// 物品类型 1 采购2 调拨 3出库4部门分发
|
Long baseGoodsModelsId = model.getBaseGoodsModelsId();
|
if (businessType == TransferBusinessType.STOCK_TRANSFER.getValue()) {
|
lWhProcureModel.setBusinessType(2);
|
// 根据物品型号查询物品库存
|
// 调拨申请时没有仓库id 查询上级机构的所有仓库
|
List<BaseWarehouse> baseWareHouseList =
|
baseWarehouseService.getBaseWareHouseList(outAgencyId, StatesType.NORMAL.getValue());
|
List<Long> warehouseIdList =
|
baseWareHouseList.stream().map(BaseWarehouse::getId).collect(Collectors.toList());
|
int goodsNum = lWhGoodsService.queryGoodsModelNum(WareHouseType.TENANT.getValue(), warehouseIdList,
|
baseGoodsModelsId, 1, null);
|
lWhProcureModel.setWorehouseCount(goodsNum);
|
}
|
if (businessType == TransferBusinessType.DEPARTMENT_PROCURE.getValue()) {
|
lWhProcureModel.setBusinessType(4);
|
}
|
lWhProcureModel.setCounts(model.getCounts());
|
lWhProcureModel.setUseCount(model.getCounts());
|
lWhProcureModel.setBusinessId(lWhFormTransferId);
|
lWhProcureModel.setBaseGoodsModelsId(baseGoodsModelsId);
|
// 根据型号id查询型号
|
List<Map<String, Object>> baseGoodsModels =
|
this.baseGoodsModelsService.queryGoodsModelInfo(baseGoodsModelsId);
|
Map<String, Object> baseModelMap = baseGoodsModels.get(0);
|
if (baseGoodsModels != null && !CollectionUtils.isEmpty(baseModelMap)) {
|
Object modelName = baseModelMap.get("modelName");
|
lWhProcureModel.setBaseGoodsModelsName(modelName.toString());
|
}
|
lWhProcureModel.setSupplier(transferGoodsInfo.getSupplier());
|
|
// 3.当业务类型为部门分发时 添加部门分发记录和使用人
|
// 单据类型 1 采购2 调拨 3出库4部门分发
|
// 部门分发类型
|
if (businessType == TransferBusinessType.DEPARTMENT_PROCURE.getValue()
|
&& CategoryType.TYPE_A.getValue().equals(baseModelMap.get("type"))) {
|
List<LWhProcureModelUser> procureModelUserList = Lists.newArrayList();
|
for (LWhProcureModelUserParam lWhProcureModelUserParam : model.getProcureModelUserList()) {
|
LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser();
|
lWhProcureModelUser.setId(IdUtil.generateId());
|
lWhProcureModelUser.setTransBusinessId(lWhFormTransferId);
|
lWhProcureModelUser.setWhProcureModelId(lWhProcureModel.getId());
|
lWhProcureModelUser.setBaseGoodsModelsId(baseGoodsModelsId);
|
lWhProcureModelUser.setNowUserName(lWhProcureModelUserParam.getNowUserName());
|
lWhProcureModelUser.setNowUserPhone(lWhProcureModelUserParam.getNowUserPhone());
|
lWhProcureModelUser.setGoodsNum(lWhProcureModelUserParam.getGoodsNum());
|
lWhProcureModelUser.setUseCount(lWhProcureModelUser.getGoodsNum());
|
lWhProcureModelUser.setProcureModelUserRecordId(lWhProcureModelUserRecord.getId());
|
procureModelUserList.add(lWhProcureModelUser);
|
}
|
int procureInsertNum = lWhProcureModelUserService.insert(procureModelUserList);
|
if (procureInsertNum != procureModelUserList.size()) {
|
log.error("新增物品使用信息失败");
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
}
|
}
|
|
modelList.add(lWhProcureModel);
|
}
|
}
|
|
int flag2 = this.lWhProcureModelService.insert(modelList);
|
if (flag2 != modelList.size()) {
|
log.error("新增物品型号失败");
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
}
|
return lWhFormTransferId;
|
}
|
|
/**
|
* @Description 列表查询
|
* @Author 卢庆阳
|
* @Date 2023/10/30
|
*/
|
public GenericPager<LWhFormTransfer> queryFormTransferList(TransferQry param) {
|
HashMap<String, Object> paramts = new HashMap<>();
|
StringBuilder sql = new StringBuilder(QUERY_FORM_TRANSFER_LIST);
|
// 调拨单号
|
if (!StringUtils.isEmpty(param.getBusinessFormCode())) {
|
sql.append(" and BUSINESS_FORM_CODE = :businessFormCode ");
|
paramts.put("businessFormCode", param.getBusinessFormCode());
|
}
|
if (param.getQryType() != null) {
|
sql.append("and ft.BUSINESS_TYPE = :businessType ");
|
paramts.put("businessType", param.getQryType());
|
}
|
// 物品名称
|
if (!StringUtils.isEmpty(param.getGoodsTemplateName())) {
|
sql.append("AND bgt.GOODS_NAME LIKE :goodsTemplateName ");
|
paramts.put("goodsTemplateName",
|
StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
|
}
|
// 物品id
|
if (param.getGoodsTemplateId() != null) {
|
sql.append("AND bgt.id = :goodsTemplateId ");
|
paramts.put("goodsTemplateId", param.getGoodsTemplateId());
|
}
|
// 调拨机构
|
if (param.getOutAgencyId() != null) {
|
sql.append(" and OUT_AGENCY_ID = :OUT_AGENCY_ID ");
|
paramts.put("OUT_AGENCY_ID", param.getOutAgencyId());
|
}
|
// 接收机构
|
if (param.getInAgencyId() != null) {
|
sql.append(" and IN_AGENCY_ID = :IN_AGENCY_ID ");
|
paramts.put("IN_AGENCY_ID", param.getInAgencyId());
|
}
|
// 状态
|
if (param.getStates() != null) {
|
sql.append(" and ft.states =:states ");
|
paramts.put("states", param.getStates());
|
}
|
// 创建人
|
if (!StringUtils.isEmpty(param.getOperatorName())) {
|
sql.append(" and OPERATOR_NAME =:OPERATOR_NAME ");
|
paramts.put("OPERATOR_NAME", param.getOperatorName());
|
}
|
// 申请时间
|
if (param.getCreateTimeStart() != null) {
|
sql.append(" and ft.CREATE_TIME >=:createTimeStart ");
|
paramts.put("createTimeStart", param.getCreateTimeStart() * 1000000);
|
}
|
if (param.getCreateTimeEnd() != null) {
|
sql.append(" and ft.CREATE_TIME <:createTimeEnd ");
|
paramts.put("createTimeEnd", param.getCreateTimeEnd() * 1000000 + 240000);
|
}
|
// 接收时间
|
if (param.getStartTime() != null) {
|
sql.append(" and IN_TIME >=:inTimeStart ");
|
paramts.put("inTimeStart", param.getStartTime() * 1000000);
|
}
|
if (param.getEndTime() != null) {
|
sql.append(" and IN_TIME <:inTimeEnd ");
|
paramts.put("inTimeEnd", param.getEndTime() * 1000000 + 240000);
|
}
|
// 分发部门
|
if (param.getDepartmentId() != null) {
|
sql.append("and ft.IN_WAREHOUSE_ID = :inWarehouseId ");
|
paramts.put("inWarehouseId", param.getDepartmentId());
|
}
|
|
sql.append(" ORDER BY ft.CREATE_TIME DESC");
|
GenericPager genericPager = selectSplit(sql.toString(), paramts, new LWhFormTransfer());
|
return genericPager;
|
|
}
|
|
/**
|
* @Description 根据id查询详情
|
* @Author 卢庆阳
|
* @Date 2023/10/30
|
*/
|
public LWHFromTransferExtendVO getById(Long id) {
|
LWHFromTransferExtendVO result = new LWHFromTransferExtendVO();
|
// 1.查询调拨单
|
LWhFormTransfer lWhFormTransfer = this.get(new LWhFormTransfer(id));
|
if (lWhFormTransfer != null) {
|
BeanUtils.copyProperties(lWhFormTransfer, result);
|
result.setDepartmentName(lWhFormTransfer.getInWarehouseName());
|
}
|
|
List<GoodModelInfoDTO> goodsModelInfo =
|
lWhProcureModelService.getGoodsModelListByBusinessId(result.getId(), null);
|
if (CollectionUtils.isEmpty(goodsModelInfo)) {
|
return result;
|
}
|
|
Map<Long, List<GoodModelInfoDTO>> collect =
|
goodsModelInfo.stream().filter(Objects::nonNull).filter(dto -> dto.getBaseGoodsTemplateId() != null)
|
.collect(Collectors.groupingBy(GoodModelInfoDTO::getBaseGoodsTemplateId));
|
List<GoodsTemplateInfoVO> goodsTemplateInfoList = Lists.newArrayList();
|
for (Map.Entry<Long, List<GoodModelInfoDTO>> entry : collect.entrySet()) {
|
List<GoodModelInfoDTO> value = entry.getValue();
|
GoodModelInfoDTO goodModelInfoDTO = value.stream().findFirst().orElse(null);
|
GoodsTemplateInfoVO goodsTemplateInfoVO = new GoodsTemplateInfoVO();
|
if (goodModelInfoDTO != null) {
|
goodsTemplateInfoVO.setId(goodModelInfoDTO.getId());
|
goodsTemplateInfoVO.setCategoryName(goodModelInfoDTO.getCategoryName());
|
goodsTemplateInfoVO.setGoodsName(goodModelInfoDTO.getBaseGoodsName());
|
goodsTemplateInfoVO.setType(goodModelInfoDTO.getType());
|
}
|
|
List<GoodsModelVO> goodsModelList = Lists.newArrayList();
|
for (GoodModelInfoDTO goodModelInfo : value) {
|
GoodsModelVO goodsModelVO = new GoodsModelVO();
|
goodsModelVO.setId(goodModelInfo.getId());
|
goodsModelVO.setBaseGoodsModelsName(goodModelInfo.getBaseGoodsModelsName());
|
goodsModelVO.setUnit(goodModelInfo.getUnit());
|
goodsModelVO.setCounts(goodModelInfo.getCounts());
|
goodsModelVO.setTotalAmount(CurrencyUtil.convertFenToYuan(goodModelInfo.getTotalAmount()));
|
// 部门分发需要查询使用信息
|
Integer businessType = result.getBusinessType();
|
String type = goodsTemplateInfoVO.getType();
|
if (businessType == TransferBusinessType.DEPARTMENT_PROCURE.getValue()
|
&& CategoryType.TYPE_A.getValue().equals(type)) {
|
Long procureModelId = goodsModelVO.getId();
|
|
LWhProcureModelUserRecord lWhProcureModelUserRecord = new LWhProcureModelUserRecord();
|
lWhProcureModelUserRecord.setTransBusinessId(id);
|
List<LWhProcureModelUserRecord> select = lWhProcureModelUserRecordService
|
.select(lWhProcureModelUserRecord, DESC().setField("DEAL_TIME"));
|
LWhProcureModelUserRecord record = select.stream().findFirst().orElse(null);
|
LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser();
|
lWhProcureModelUser.setWhProcureModelId(procureModelId);
|
lWhProcureModelUser.setProcureModelUserRecordId(record.getId());
|
List<LWhProcureModelUser> procureModelUserList =
|
this.lWhProcureModelUserService.select(lWhProcureModelUser);
|
|
if (!CollectionUtils.isEmpty(procureModelUserList)) {
|
List<DepartGoodsUseInfo> departGoodsUseInfoList = Lists.newArrayList();
|
procureModelUserList.forEach(useInfo -> {
|
Integer goodsNum = useInfo.getGoodsNum();
|
Long nowUserPhone = useInfo.getNowUserPhone();
|
String nowUserName = useInfo.getNowUserName();
|
DepartGoodsUseInfo departGoodsUseInfo = new DepartGoodsUseInfo();
|
departGoodsUseInfo.setName(nowUserName);
|
departGoodsUseInfo.setNum(goodsNum);
|
departGoodsUseInfo.setTel(nowUserPhone);
|
departGoodsUseInfoList.add(departGoodsUseInfo);
|
});
|
goodsModelVO.setUseInfo(departGoodsUseInfoList);
|
}
|
}
|
goodsModelList.add(goodsModelVO);
|
}
|
goodsTemplateInfoVO.setModels(goodsModelList);
|
goodsTemplateInfoList.add(goodsTemplateInfoVO);
|
}
|
result.setFormTransferGoods(goodsTemplateInfoList);
|
|
return result;
|
}
|
|
/**
|
* @Description 导出调拨出库单
|
* @Author 卢庆阳
|
* @Date 2023/10/31
|
*/
|
public List<TransferExcelTemplate> export(Long id, Integer type) {
|
String sql = "SELECT\n" + "\tft.BUSINESS_FORM_CODE,\n" + "\tft.OPERATOR_NAME,\n" + "\tft.CREATE_TIME,\n"
|
+ "\tft.IN_AGENCY_NAME,\n" + "\tft.OUT_AGENCY_NAME,\n" + "\tGOODS_NAME templateName,\n"
|
+ "\tpm.BASE_GOODS_MODELS_NAME baseModelName,\n" + "\tpm.COUNTS num,\n" + "\tpm.total_amount,\n"
|
+ "\tft.BEIZ1 remark\n" + "FROM\n" + "\tl_wh_form_transfer ft\n"
|
+ "\tINNER JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID\n"
|
+ "\tINNER JOIN base_goods_models bgm ON bgm.ID = pm.BASE_GOODS_MODELS_ID\n"
|
+ "\tINNER JOIN base_goods_template bgt ON bgt.ID = bgm.GOODS_TEMPLATES_ID\n" + "WHERE\n" + "\tft.id = :id";
|
Map<String, Object> paramts = new HashMap<>();
|
paramts.put("id", id);
|
List<Map<String, Object>> select = this.select(sql, paramts, new MapperUtil());
|
List<TransferExcelTemplate> list = Lists.newArrayList();
|
select.forEach(item -> {
|
TransferExcelTemplate templateExcelTransfer = MapUtils.convertMapToObj(item, TransferExcelTemplate.class);
|
if (type == 1) {
|
templateExcelTransfer.setTenantName(templateExcelTransfer.getOutAgencyName());
|
} else {
|
templateExcelTransfer.setTenantName(templateExcelTransfer.getInAgencyName());
|
}
|
templateExcelTransfer.setAmount(CurrencyUtil.convertFenToYuan(templateExcelTransfer.getTotalAmount()));
|
list.add(templateExcelTransfer);
|
});
|
|
return list;
|
}
|
|
/**
|
* 撤销
|
*
|
* @author 卢庆阳
|
* @date 2023/10/31
|
*/
|
public int updateStatus(Long id) {
|
LWhFormTransfer lWhFormTransfer = new LWhFormTransfer(id);
|
lWhFormTransfer.setStates(TransferStatesType.CANCEL.getValue());
|
return this.update(lWhFormTransfer);
|
}
|
|
public GenericPager<Map<String, Object>> queryTransferInfo(TransferQry transferQry) {
|
|
HashMap<String, Object> paramts = new HashMap<>();
|
StringBuilder sql = new StringBuilder(
|
"SELECT ft.id,ft.BUSINESS_FORM_CODE,bgt.GOODS_NAME,bgt.CLASSIFICATION type,bgm.id goodsModelId,bgm.MODEL_NAME goodsModelName,pm.COUNTS goodsCount,fst.`name` tenantName,"
|
+ "ft.IN_WAREHOUSE_NAME departmentName,ft.OPERATOR_ID,ft.CREATE_TIME,ft.OPERATOR_NAME FROM l_wh_form_transfer ft "
|
+ "inner JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID "
|
+ "inner JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID "
|
+ "inner JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID "
|
+ "inner JOIN fin_sys_tenant_user fstu ON fstu.id = ft.OPERATOR_ID "
|
+ "inner JOIN fin_sys_tenant_department fstd ON fstu.SYS_DEPT_ID = fstd.ID "
|
+ "inner JOIN fin_sys_tenant fst ON fst.id = fstd.TENANT_ID where ft.BUSINESS_TYPE =1 ");
|
// 单号
|
if (StringUtils.isNotEmpty(transferQry.getBusinessFormCode())) {
|
sql.append("AND BUSINESS_FORM_CODE like :businessFormCode ");
|
paramts.put("businessFormCode",
|
StringUtils.CHAR_PERCENT + transferQry.getBusinessFormCode() + StringUtils.CHAR_PERCENT);
|
}
|
// 物品名称
|
if (StringUtils.isNotEmpty(transferQry.getGoodsTemplateName())) {
|
sql.append("AND bgt.GOODS_NAME like:goodsName ");
|
paramts.put("goodsName",
|
StringUtils.CHAR_PERCENT + transferQry.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
|
}
|
// 物品id
|
if (transferQry.getGoodsTemplateId() != null) {
|
sql.append("AND bgt.id =:goodsTemplateId ");
|
paramts.put("goodsTemplateId", transferQry.getGoodsTemplateId());
|
}
|
// 规格型号
|
if (transferQry.getBaseGoodsModelsId() != null) {
|
sql.append("AND bgm.id =:goodsModelId ");
|
paramts.put("goodsModelId", transferQry.getBaseGoodsModelsId());
|
}
|
// 调拨机构
|
if (transferQry.getOutAgencyId() != null) {
|
sql.append("AND OUT_AGENCY_ID like :OUT_AGENCY_ID ");
|
paramts.put("OUT_AGENCY_ID", transferQry.getOutAgencyId() + StringUtils.CHAR_PERCENT);
|
}
|
// 分发部门
|
if (transferQry.getDepartmentId() != null) {
|
sql.append("and ft.IN_WAREHOUSE_ID = :inWarehouseId ");
|
paramts.put("inWarehouseId", transferQry.getDepartmentId());
|
}
|
// 创建人
|
if (StringUtils.isNotEmpty(transferQry.getOperatorName())) {
|
sql.append("AND ft.OPERATOR_NAME =:OPERATOR_NAME ");
|
paramts.put("OPERATOR_NAME", transferQry.getOperatorName());
|
}
|
// 申请时间
|
if (transferQry.getStartTime() != null) {
|
sql.append("AND ft.CREATE_TIME >=:createTimeStart ");
|
paramts.put("createTimeStart", transferQry.getStartTime() * 1000000);
|
}
|
if (transferQry.getEndTime() != null) {
|
sql.append("AND ft.CREATE_TIME <:createTimeEnd ");
|
paramts.put("createTimeEnd", transferQry.getEndTime() * 1000000 + 240000);
|
}
|
sql.append("ORDER BY ft.CREATE_TIME DESC");
|
|
GenericPager<Map<String, Object>> mapGenericPager = this.selectSplit(sql.toString(), paramts,
|
transferQry.getPageNum(), transferQry.getPageSize(), new MapperUtil());
|
|
return mapGenericPager;
|
}
|
|
public GenericPager<Map<String, Object>> queryFormTransferDetailList(TransferQry param) {
|
|
HashMap<String, Object> params = new HashMap<>();
|
StringBuilder sql = new StringBuilder("SELECT ft.id,\n" + " ft.BUSINESS_FORM_CODE,\n"
|
+ " bgt.GOODS_NAME,\n" + " bgt.CLASSIFICATION,\n" + " pm.BASE_GOODS_MODELS_NAME,\n"
|
+ " pm.COUNTS,\n" + " ft.IN_AGENCY_NAME,\n" + " ft.OPERATOR_NAME,\n"
|
+ " ft.CREATE_TIME,\n" + " ft.IN_TIME,\n" + " ft.OUT_AGENCY_NAME,\n"
|
+ " ft.OUT_OPERATOR_NAME,\n" + " ft.OUTPUT_TIME\n" + "FROM l_wh_form_transfer ft\n"
|
+ " LEFT JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID\n"
|
+ " LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID\n"
|
+ " LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID where ft.BUSINESS_TYPE =0 ");
|
if (StringUtils.isNotEmpty(param.getBusinessFormCode())) {
|
sql.append("AND ft.BUSINESS_FORM_CODE = :businessFormCode ");
|
params.put("businessFormCode", param.getBusinessFormCode());
|
}
|
if (StringUtils.isNotEmpty(param.getGoodsTemplateName())) {
|
sql.append("AND bgt.GOODS_NAME like :goodsName ");
|
params.put("goodsName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
|
}
|
if (param.getGoodsTemplateId() != null) {
|
sql.append("AND bgt.id = :goodsTemplateId ");
|
params.put("goodsTemplateId", param.getGoodsTemplateId());
|
}
|
if (param.getBaseGoodsModelsId() != null) {
|
sql.append("AND bgm.id = :goodsModelId ");
|
params.put("goodsModelId", param.getBaseGoodsModelsId());
|
}
|
if (param.getOutAgencyId() != null) {
|
sql.append("AND ft.OUT_AGENCY_ID like :outAgencyId ");
|
params.put("outAgencyId", param.getOutAgencyId() + StringUtils.CHAR_PERCENT);
|
}
|
if (param.getInAgencyId() != null) {
|
sql.append("AND ft.IN_AGENCY_ID like :inAgencyId ");
|
params.put("inAgencyId", param.getInAgencyId() + StringUtils.CHAR_PERCENT);
|
}
|
if (StringUtils.isNotEmpty(param.getOperatorName())) {
|
sql.append("AND ft.OPERATOR_NAME = :operatorName ");
|
params.put("operatorName", param.getOperatorName());
|
}
|
// 申请创建时间
|
if (param.getCreateTimeStart() != null) {
|
sql.append("AND ft.CREATE_TIME >= :createTimeStart ");
|
params.put("createTimeStart", param.getCreateTimeStart() * 1000000);
|
}
|
if (param.getCreateTimeEnd() != null) {
|
sql.append("AND ft.CREATE_TIME < :createTimeEnd ");
|
params.put("createTimeEnd", param.getCreateTimeEnd() * 1000000 + 240000);
|
}
|
// 接收时间
|
if (param.getStartTime() != null) {
|
sql.append("AND ft.IN_TIME >= :createTimeStart ");
|
params.put("createTimeStart", param.getStartTime() * 1000000);
|
}
|
if (param.getEndTime() != null) {
|
sql.append("AND ft.IN_TIME < :createTimeEnd ");
|
params.put("createTimeEnd", param.getEndTime() * 1000000 + 240000);
|
}
|
GenericPager<Map<String, Object>> mapGenericPager =
|
this.selectSplit(sql.toString(), params, param.getPageNum(), param.getPageSize(), new MapperUtil());
|
return mapGenericPager;
|
|
}
|
|
public List<Map<String, Object>> queryDepartmentTransferOrder() {
|
|
String sql = "SELECT ft.id,\n" + " ft.BUSINESS_FORM_CODE,\n" + " gr.GOODS_TEMPLATE_NAME,\n"
|
+ " gr.BASE_GOODS_TEMPLATE_ID goodsTemplateId,\n" + " ft.CREATE_TIME\n" + "\n"
|
+ "FROM l_wh_form_transfer ft\n" + " LEFT JOIN L_WAREHOUSE_FLOW wf ON ft.id = wf.BUSINESS_FORM_ID\n"
|
+ " left join L_WH_GOODS_RECORD gr on gr.WAREHOUSE_FLOW_ID = wf.id\n"
|
+ " LEFT JOIN L_GOODS_WH_RECORD gwr on gwr.WAREHOUSE_FLOW_ID = wf.id\n"
|
+ " left join L_WH_GOODS g on g.id = gwr.WH_GOODS_ID where ft.BUSINESS_TYPE = 1 GROUP BY gr.BASE_GOODS_TEMPLATE_ID \n";
|
HashMap<String, Object> param = new HashMap<>();
|
List<Map<String, Object>> select = this.select(sql, param, new MapperUtil());
|
select.forEach(item -> {
|
|
});
|
return select;
|
|
}
|
|
@Override
|
public LWhFormTransfer selectById(Long id) {
|
LWhFormTransfer lWhFormTransfer = new LWhFormTransfer();
|
lWhFormTransfer.setId(id);
|
return this.get(lWhFormTransfer);
|
}
|
}
|