可以提供个Demo么
[EngincanV] said:
[dhaoo] said:
hi:
Through the document, I saw the requirements for dynamic or static agents. The interface under the Contracts project can implement the agent, but this interface definition does not exist in the module program of the multi-layer project. What should I do nowDo you have an application service interface defined in your
*.Application.Contracts
project and referenced in your other module? Typically, in ABP, application service contracts are placed in the*.Application.Contracts
layer, and other modules reference that project to access the services.You can refer to the Service Interface section in the document for more info.
Must the interface defined by *.Application.Contracts be referenced in the module to implement the proxy? Is it referenced in the *.HttpApi project or in the *.httpapi.client
Hi,I checked the AbpUsers table and found that no new field was added. Where is the storage of this field placed
Wow, it's amazing. Thank you very much!
Hi,Why does the microservice version 8.1.3 that I recently created through cli still have this code snippet
The comment section is the logic for resetting the application if it is not in the dev environment
ok, this my controller
using LCFC.MOM.PEC.bPEC1003SMT.bPEC1003SMT;
using LCFC.MOM.PEC.bPEC1003SMT.Extensions;
using LCFC.MOM.PEC.bPEC1003SMT.Localization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc;
namespace LCFC.MOM.PEC.bPEC1003SMT;
[Area(bPEC1003SMTRemoteServiceConsts.ModuleName)]
[RemoteService(Name = bPEC1003SMTRemoteServiceConsts.RemoteServiceName)]
[Route("api/bPEC1003SMT")]
public class bPEC1003SMTController : AbpControllerBase, IbPEC1003SMTAppService
{
private readonly IbPEC1003SMTAppService _ibPEC1003SMTAppService;
public bPEC1003SMTController(IbPEC1003SMTAppService ibPEC1003SMTAppService)
{
LocalizationResource = typeof(bPEC1003SMTResource);
_ibPEC1003SMTAppService = ibPEC1003SMTAppService;
}
[HttpPost]
[Route("getList")]
public async Task<ResultView> GetListAsync([FromBody] QueryDto queryDto)
{
var result = await _ibPEC1003SMTAppService.GetListAsync(queryDto);
return result;
}
[HttpPost]
[Route("add")]
public async Task<ResultView> AddAsync([FromBody] InsertDto insertDto)
{
var result = await _ibPEC1003SMTAppService.AddAsync(insertDto);
return result;
}
[HttpPost]
[Route("edit")]
public async Task<ResultView> EditAsync([FromBody] UpdateDto updateDto)
{
return await _ibPEC1003SMTAppService.EditAsync(updateDto);
}
[HttpPost]
[Route("delete")]
public async Task<ResultView> DeleteAsync([FromBody] DeleteDto deleteDto)
{
var result = await _ibPEC1003SMTAppService.DeleteAsync(deleteDto);
return result;
}
[HttpPost]
[Route("exportToExcel")]
public async Task<ResultView> ExportToExcelAsync([FromBody] QueryDto queryDto)
{
var result = await _ibPEC1003SMTAppService.ExportToExcelAsync(queryDto);
return result;
}
[HttpGet]
[Route("DownloadTemplate")]
public FileResult DownloadTemplate()
{
// 使用NPOI创建模板文件
IWorkbook workbook = new XSSFWorkbook();
ISheet sheet = workbook.CreateSheet("Sheet1");
// 创建标题行
IRow headerRow = sheet.CreateRow(0);
headerRow.CreateCell(0).SetCellValue("SKU_PN");
headerRow.CreateCell(1).SetCellValue("PACKING_TYPE");
headerRow.CreateCell(2).SetCellValue("PALLET_IN_QTY");
headerRow.CreateCell(3).SetCellValue("CARTON_IN_QTY");
headerRow.CreateCell(4).SetCellValue("UNIT_GROSS_WEIGHT");
headerRow.CreateCell(5).SetCellValue("UNIT_NET_WEIGHT");
headerRow.CreateCell(6).SetCellValue("PACKAGE_WEIGHT");
headerRow.CreateCell(7).SetCellValue("PALLET_SIZE_L");
headerRow.CreateCell(8).SetCellValue("PALLET_SIZE_W");
headerRow.CreateCell(9).SetCellValue("PALLET_SIZE_H");
using (var memoryStream = new MemoryStream())
{
workbook.Write(memoryStream);
return File(memoryStream.ToArray(),
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"bPEC1003SMT_Template.xlsx");
}
}
[HttpPost]
[Route("UploadExcel")]
public async Task<ResultView> UploadExcelAsync(IFormFile file)
{
return await _ibPEC1003SMTAppService.UploadExcelAsync(file);
}
}
using LCFC.MOM.PEC.bPEC1003SMT.Extensions;
using LCFC.MOM.PEC.bPEC1003SMT.Localization;
using LCFC.MOM.PEC.bPEC1003SMT.Utils;
using Oracle.ManagedDataAccess.Client;
using Microsoft.AspNetCore.Http;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
using Volo.Abp.Data;
using Volo.Abp.Users;
using NPOI.Util;
namespace LCFC.MOM.PEC.bPEC1003SMT.bPEC1003SMT
{
public class bPEC1003SMTAppService : ApplicationService, IbPEC1003SMTAppService
{
private readonly IConnectionStringResolver _configuration;
private readonly ICurrentUser _currentUser;
private InfoLightDBTools _dbTools;
private InfoLightDBTXTools _dbTxTools;
private string _userId;
public bPEC1003SMTAppService(IConnectionStringResolver configuration,
ICurrentUser currentUser)
{
LocalizationResource = typeof(bPEC1003SMTResource);
ObjectMapperContext = typeof(bPEC1003SMTApplicationModule);
_configuration = configuration;
_currentUser = currentUser;
_userId = _currentUser.UserName ?? "001"; // TODO: 这里需要改成从当前登录用户获取用户ID
string connectionString = _configuration.ResolveAsync("MOMDefault").Result;
_dbTools = new InfoLightDBTools(null, connectionString);
_dbTxTools = new InfoLightDBTXTools(null, connectionString);
}
public async Task<ResultView> AddAsync(InsertDto insertDto)
{
insertDto.SkuPn = insertDto.SkuPn.ToUpper().Trim();
insertDto.PackingType = insertDto.PackingType.ToUpper().Trim();
insertDto.CountryCode = insertDto.CountryCode.ToUpper().Trim();
insertDto.VasType = insertDto.VasType.ToUpper().Trim();
if (string.IsNullOrWhiteSpace(insertDto.SkuPn)
|| string.IsNullOrWhiteSpace(insertDto.PackingType)
|| string.IsNullOrWhiteSpace(insertDto.CountryCode)
|| string.IsNullOrWhiteSpace(insertDto.VasType))
{
return await Task.FromResult(ResultView.Error(L["RequiredField"].Value));
}
if (insertDto.UnitGrossWeight < insertDto.UnitNetWeight)
{
return await Task.FromResult(ResultView.Error(L["GrossWeightGreaterThanNetWeight"].Value));
}
if (insertDto.PackingType == "1" && insertDto.PackageWeight > 0)
{
return await Task.FromResult(ResultView.Error(L["PackageWeightMustBeZero"].Value));
}
DBParameter dbParam = new();
ResultView result;
ExecutionResult execRes;
string sql = @$"INSERT INTO SFIS1.C_SKU_C38_PALLET_INFO_T(
SKU_PN, PACKING_TYPE, PALLET_IN_QTY, CARTON_IN_QTY, UNIT_GROSS_WEIGHT,
UNIT_NET_WEIGHT, PACKAGE_WEIGHT, PALLET_SIZE_L, PALLET_SIZE_W, PALLET_SIZE_H,
CREATE_UESER, CREATE_DATE, COUNTRY_CODE, VAS_TYPE)
VALUES(
:SKU_PN, :PACKING_TYPE, :PALLET_IN_QTY, :CARTON_IN_QTY, :UNIT_GROSS_WEIGHT,
:UNIT_NET_WEIGHT, :PACKAGE_WEIGHT, :PALLET_SIZE_L, :PALLET_SIZE_W, :PALLET_SIZE_H,
:CREATE_UESER, SYSDATE, :COUNTRY_CODE, :VAS_TYPE)";
dbParam.Add("SKU_PN", OracleDbType.Varchar2, insertDto.SkuPn);
dbParam.Add("PACKING_TYPE", OracleDbType.Varchar2, insertDto.PackingType);
dbParam.Add("PALLET_IN_QTY", OracleDbType.Int32, insertDto.PalletInQty);
dbParam.Add("CARTON_IN_QTY", OracleDbType.Int32, insertDto.CartonInQty);
dbParam.Add("UNIT_GROSS_WEIGHT", OracleDbType.Decimal, insertDto.UnitGrossWeight);
dbParam.Add("UNIT_NET_WEIGHT", OracleDbType.Decimal, insertDto.UnitNetWeight);
dbParam.Add("PACKAGE_WEIGHT", OracleDbType.Decimal, insertDto.PackageWeight);
dbParam.Add("PALLET_SIZE_L", OracleDbType.Decimal, insertDto.PalletSizeL);
dbParam.Add("PALLET_SIZE_W", OracleDbType.Decimal, insertDto.PalletSizeW);
dbParam.Add("PALLET_SIZE_H", OracleDbType.Decimal, insertDto.PalletSizeH);
dbParam.Add("CREATE_UESER", OracleDbType.Varchar2, _userId);
dbParam.Add("COUNTRY_CODE", OracleDbType.Varchar2, insertDto.CountryCode);
dbParam.Add("VAS_TYPE", OracleDbType.Varchar2, insertDto.VasType);
execRes = _dbTools.ExecuteUpdate(sql, dbParam.GetParameters());
if (execRes.Status)
{
if (GetStatus(insertDto.SkuPn))
{
InsertPN(insertDto.SkuPn);
}
result = ResultView.Success(execRes.Anything);
}
else
{
result = ResultView.Error(execRes.Message);
}
return await Task.FromResult(result);
}
private void InsertPN(string vpn)
{
DBParameter dbParam = new();
string sql = @"Insert into sfism4.u_up2interface_todolist_t
(cust_no, type, wip_sn)
Values
('NB12', 'W3', :PN)";
dbParam.Add("PN", OracleDbType.Varchar2 , vpn);
_ = _dbTools.ExecuteUpdate(sql, dbParam.GetParameters());
}
public async Task<ResultView> EditAsync(UpdateDto updateDto)
{
updateDto.SkuPn = updateDto.SkuPn.ToUpper().Trim();
updateDto.PackingType = updateDto.PackingType.ToUpper().Trim();
updateDto.CountryCode = updateDto.CountryCode.ToUpper().Trim();
updateDto.VasType = updateDto.VasType.ToUpper().Trim();
updateDto.OldSkuPn = updateDto.OldSkuPn.ToUpper().Trim();
updateDto.OldPackingType = updateDto.OldPackingType.ToUpper().Trim();
if (string.IsNullOrWhiteSpace(updateDto.SkuPn)
|| string.IsNullOrWhiteSpace(updateDto.PackingType)
|| string.IsNullOrWhiteSpace(updateDto.CountryCode)
|| string.IsNullOrWhiteSpace(updateDto.VasType)
|| string.IsNullOrWhiteSpace(updateDto.OldSkuPn)
|| string.IsNullOrWhiteSpace(updateDto.OldPackingType))
{
return await Task.FromResult(ResultView.Error(L["RequiredField"].Value)); // 維護欄位不可為空!
}
if (updateDto.UnitGrossWeight < updateDto.UnitNetWeight)
{
return await Task.FromResult(ResultView.Error(L["GrossWeightGreaterThanNetWeight"].Value)); // UNIT_GROSS_WEIGHT需大於UNIT_NET_WEIGHT
}
if (updateDto.PackingType == "1" && updateDto.PackageWeight > 0)
{
return await Task.FromResult(ResultView.Error(L["PackageWeightMustBeZero"].Value)); // 单台的packageweight应维护为0
}
DBParameter dbParam = new();
ResultView result;
ExecutionResult execRes;
string sql = @$"UPDATE SFIS1.C_SKU_C38_PALLET_INFO_T
SET
SKU_PN = :SKU_PN,
PACKING_TYPE = :PACKING_TYPE,
PALLET_IN_QTY = :PALLET_IN_QTY,
CARTON_IN_QTY = :CARTON_IN_QTY,
UNIT_GROSS_WEIGHT = :UNIT_GROSS_WEIGHT,
UNIT_NET_WEIGHT = :UNIT_NET_WEIGHT,
PACKAGE_WEIGHT = :PACKAGE_WEIGHT,
PALLET_SIZE_L = :PALLET_SIZE_L,
PALLET_SIZE_W = :PALLET_SIZE_W,
PALLET_SIZE_H = :PALLET_SIZE_H,
UPDATE_USER = :UPDATE_USER,
UPDATE_DATE = SYSDATE,
COUNTRY_CODE = :COUNTRY_CODE,
VAS_TYPE = :VAS_TYPE
WHERE
SKU_PN = :OLD_SKU_PN AND PACKING_TYPE = :OLD_PACKING_TYPE";
dbParam.Add("SKU_PN", OracleDbType.Varchar2, updateDto.SkuPn);
dbParam.Add("PACKING_TYPE", OracleDbType.Varchar2, updateDto.PackingType);
dbParam.Add("PALLET_IN_QTY", OracleDbType.Int32, updateDto.PalletInQty);
dbParam.Add("CARTON_IN_QTY", OracleDbType.Int32, updateDto.CartonInQty);
dbParam.Add("UNIT_GROSS_WEIGHT", OracleDbType.Decimal, updateDto.UnitGrossWeight);
dbParam.Add("UNIT_NET_WEIGHT", OracleDbType.Decimal, updateDto.UnitNetWeight);
dbParam.Add("PACKAGE_WEIGHT", OracleDbType.Decimal, updateDto.PackageWeight);
dbParam.Add("PALLET_SIZE_L", OracleDbType.Decimal, updateDto.PalletSizeL);
dbParam.Add("PALLET_SIZE_W", OracleDbType.Decimal, updateDto.PalletSizeW);
dbParam.Add("PALLET_SIZE_H", OracleDbType.Decimal, updateDto.PalletSizeH);
dbParam.Add("UPDATE_USER", OracleDbType.Varchar2, _userId);
dbParam.Add("COUNTRY_CODE", OracleDbType.Varchar2, updateDto.CountryCode);
dbParam.Add("VAS_TYPE", OracleDbType.Varchar2, updateDto.VasType);
dbParam.Add("OLD_SKU_PN", OracleDbType.Varchar2, updateDto.OldSkuPn);
dbParam.Add("OLD_PACKING_TYPE", OracleDbType.Varchar2, updateDto.OldPackingType);
execRes = _dbTools.ExecuteUpdate(sql, dbParam.GetParameters());
if (execRes.Status)
{
if (GetStatus(updateDto.SkuPn))
{
InsertPN(updateDto.SkuPn);
}
result = ResultView.Success(execRes.Anything);
}
else
{
result = ResultView.Error(execRes.Message);
}
return await Task.FromResult(result);
}
}
}
ok,thanks