优化页面
This commit is contained in:
@@ -66,4 +66,9 @@ public class ToErpApiController {
|
||||
public AjaxResult getInStock(){
|
||||
return toErpService.getInStock();
|
||||
}
|
||||
|
||||
@RequestMapping("/inStockConfirm/{stockinGuids}")
|
||||
public AjaxResult inStockConfirm( @PathVariable String[] stockinGuids){
|
||||
return toErpService.inStockConfirm(stockinGuids);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.ruoyi.api.domain;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class PostReturn {
|
||||
Boolean success;
|
||||
String body;
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.ruoyi.api.domain.erp;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ERP入库回传请求参数
|
||||
*/
|
||||
@Data
|
||||
public class ErpInStockinConfirmRequest {
|
||||
|
||||
/**
|
||||
* 单据ID (ERP端的入库ID)
|
||||
*/
|
||||
@JsonProperty("ord")
|
||||
private String ord;
|
||||
|
||||
/**
|
||||
* 确认时间 (接口要求日期格式为:yyyy-MM-dd HH:mm:ss)
|
||||
*/
|
||||
@JsonProperty("Date5")
|
||||
private String date5;
|
||||
|
||||
/**
|
||||
* 入库状态
|
||||
*/
|
||||
@JsonProperty("Complete1")
|
||||
private Integer complete1;
|
||||
|
||||
/**
|
||||
* 库管意见
|
||||
*/
|
||||
@JsonProperty("Intro2")
|
||||
private String intro2;
|
||||
|
||||
/**
|
||||
* 入库明细
|
||||
*/
|
||||
@JsonProperty("KuinList")
|
||||
private List<ErpInStockinDetailConfirmRequest> kuinList;
|
||||
|
||||
/**
|
||||
* 客户名称
|
||||
*/
|
||||
@JsonProperty("!B__SysCusmf_0_61001_413_0")
|
||||
private String customerName;
|
||||
|
||||
/**
|
||||
* 磅单编号
|
||||
*/
|
||||
@JsonProperty("!B__SysCusmf_0_61001_414_0")
|
||||
private String weighbillNo;
|
||||
|
||||
/**
|
||||
* 入库车号
|
||||
*/
|
||||
@JsonProperty("!B__SysCusmf_0_61001_415_0")
|
||||
private String vehicleNo;
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
package com.ruoyi.api.domain.erp;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* ERP入库回传明细请求参数
|
||||
*/
|
||||
@Data
|
||||
public class ErpInStockinDetailConfirmRequest {
|
||||
|
||||
/**
|
||||
* 明细ID
|
||||
*/
|
||||
@JsonProperty("id")
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
@JsonProperty("Num1")
|
||||
private BigDecimal num1;
|
||||
|
||||
/**
|
||||
* 辅助单位
|
||||
*/
|
||||
@JsonProperty("AssistUnit")
|
||||
private String assistUnit;
|
||||
|
||||
/**
|
||||
* 辅助数量
|
||||
*/
|
||||
@JsonProperty("AssistNum")
|
||||
private BigDecimal assistNum;
|
||||
|
||||
/**
|
||||
* 仓库
|
||||
*/
|
||||
@JsonProperty("Ku")
|
||||
private String ku;
|
||||
|
||||
/**
|
||||
* 货位ID
|
||||
*/
|
||||
@JsonProperty("WareHousePositionID")
|
||||
private String wareHousePositionID;
|
||||
|
||||
/**
|
||||
* 批号
|
||||
*/
|
||||
@JsonProperty("Ph")
|
||||
private String ph;
|
||||
|
||||
/**
|
||||
* 序列号
|
||||
*/
|
||||
@JsonProperty("Xlh")
|
||||
private String xlh;
|
||||
|
||||
/**
|
||||
* 生产日期
|
||||
*/
|
||||
@JsonProperty("Datesc")
|
||||
private String datesc;
|
||||
|
||||
/**
|
||||
* 有效期
|
||||
*/
|
||||
@JsonProperty("Dateyx")
|
||||
private String dateyx;
|
||||
|
||||
/**
|
||||
* 到货日期
|
||||
*/
|
||||
@JsonProperty("Date2")
|
||||
private String date2;
|
||||
|
||||
/**
|
||||
* 客户ID
|
||||
*/
|
||||
@JsonProperty("sysIcusIInheritIdIidI1")
|
||||
private String sysIcusIInheritIdIidI1;
|
||||
}
|
||||
@@ -41,4 +41,6 @@ public interface IToErpService {
|
||||
void AddStockinDetailByErpStockinDetail(ErpInStockinDetail erpInStockinetail);
|
||||
|
||||
AjaxResult getInStock();
|
||||
|
||||
AjaxResult inStockConfirm(String[] stockInId);
|
||||
}
|
||||
|
||||
@@ -1,16 +1,20 @@
|
||||
package com.ruoyi.api.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.date.DateField;
|
||||
import cn.hutool.core.date.DateUnit;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.http.HttpResponse;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import cn.hutool.json.JSONArray;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.ruoyi.api.domain.PostReturn;
|
||||
import com.ruoyi.api.domain.erp.*;
|
||||
import com.ruoyi.api.service.IToErpService;
|
||||
import com.ruoyi.bas.BasCustomer.domain.BasCustomer;
|
||||
@@ -48,14 +52,19 @@ import com.ruoyi.stock.stock.domain.BasStock;
|
||||
import com.ruoyi.stock.stock.service.IBasStockService;
|
||||
import com.ruoyi.system.domain.InStockinDetailN;
|
||||
import com.ruoyi.system.domain.InStockinN;
|
||||
import com.ruoyi.system.domain.InStockinNFinish;
|
||||
import com.ruoyi.system.domain.InStockinNQueryRequest;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.ruoyi.common.enums.StockInCompleteStatus;
|
||||
import com.ruoyi.system.service.IInStockinDetailNFinishService;
|
||||
import com.ruoyi.system.service.IInStockinDetailNService;
|
||||
import com.ruoyi.system.service.IInStockinNFinishService;
|
||||
import com.ruoyi.system.service.IInStockinNService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
@@ -440,19 +449,11 @@ public class ToErpServiceImpl implements IToErpService {
|
||||
|
||||
@Override
|
||||
public AjaxResult callErp(ReceiveOutStockConfirm receiveOutStockConfirm) {
|
||||
String body=HttpRequest.post(outStockConfirmUrl).header("ZBAPI-Token", login()).body(JSONUtil.toJsonStr(receiveOutStockConfirm)).execute().body();
|
||||
CallErpResponse callErpResponse = JSONUtil.toBean(body, CallErpResponse.class);
|
||||
if (callErpResponse.getCode()==200){
|
||||
Boolean success=post(outStockConfirmUrl,JSONUtil.toJsonStr(receiveOutStockConfirm),"出库单回传").getSuccess();
|
||||
if (success){
|
||||
return AjaxResult.success();
|
||||
}else {
|
||||
if (callErpResponse.getCode()==300){
|
||||
return AjaxResult.error("请求失败");
|
||||
}else if (callErpResponse.getCode()==400){
|
||||
return AjaxResult.error("token验证失败");
|
||||
}else if (callErpResponse.getCode()==500){
|
||||
return AjaxResult.error("服务器内部错误");
|
||||
}
|
||||
return AjaxResult.error(callErpResponse.getMsg());
|
||||
return AjaxResult.error();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -666,43 +667,20 @@ public class ToErpServiceImpl implements IToErpService {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成入库单据 -> 根据erp入库子单更新wms入库子单明细
|
||||
* @param erpInStockinetail
|
||||
*/
|
||||
public void AddStockinDetailByErpStockinDetail(ErpInStockinDetail erpInStockinetail) {
|
||||
|
||||
InStockinDetail inStockinDetail = new InStockinDetail();
|
||||
try {
|
||||
//向wms入库单据表同步erp主单信息
|
||||
inStockinDetail.setStockinDetailId(erpInStockinetail.getId().toString());//明细id
|
||||
inStockinDetail.setStockinGuid(erpInStockinetail.getSpare3());//入库主单guid
|
||||
inStockinDetail.setStockinId(erpInStockinetail.getKuin());//主单id
|
||||
inStockinDetail.setLotNo(erpInStockinetail.getPh());//批次
|
||||
inStockinDetail.setProductId(erpInStockinetail.getSpare2());//物料编号
|
||||
inStockinDetail.setAssignNum(erpInStockinetail.getQuantity().toString());//入库数量
|
||||
inStockinDetail.setWarehouseId("0");//库区
|
||||
inStockinDetail.setPrintDate(DateUtil.now());//库区
|
||||
inStockinDetail.setStatus("");//单据状态
|
||||
inStockinDetail.setRemark("");//入库备注
|
||||
|
||||
//更新/新增wms入库明细
|
||||
if (ObjUtil.isNotNull(inStockinDetailService.selectInStockinDetailByStockinGuid(inStockinDetail.getStockinGuid()))) {
|
||||
inStockinDetailService.updateInStockinDetail(inStockinDetail);
|
||||
}else{
|
||||
inStockinDetailService.insertInStockinDetail(inStockinDetail);
|
||||
}
|
||||
}catch(Exception e){
|
||||
log.error("生成/更新单据明细失败,主单据号:" + inStockinDetail.getStockinId() + ",异常信息:" + e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private IInStockinNService inStockinNService;
|
||||
|
||||
@Autowired
|
||||
private com.ruoyi.system.service.IInStockinDetailNService inStockinDetailNService;
|
||||
private IInStockinNFinishService inStockinNFinishService;
|
||||
|
||||
@Autowired
|
||||
private IInStockinDetailNService inStockinDetailNService;
|
||||
|
||||
@Autowired
|
||||
private IInStockinDetailNFinishService inStockinDetailNFinishService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private ObjectMapper objectMapper;
|
||||
@@ -732,9 +710,13 @@ public class ToErpServiceImpl implements IToErpService {
|
||||
} catch (Exception e) {
|
||||
log.error("JSON序列化失败", e);
|
||||
return AjaxResult.error("JSON序列化失败");
|
||||
}
|
||||
PostReturn result = post(getStockinListUrl, jsonStr, "获取入库单");
|
||||
if (!result.getSuccess()){
|
||||
return AjaxResult.error("接口调用失败");
|
||||
}
|
||||
// 获取ERP数据
|
||||
String body = HttpRequest.post(getStockinListUrl).header(TOKEN_KEY, login()).body(jsonStr).execute().body();
|
||||
String body = result.getBody();
|
||||
// 解析响应
|
||||
ErpInStockinNResponse response = JSONUtil.toBean(body, ErpInStockinNResponse.class);
|
||||
if (response != null && response.getRows() != null) {
|
||||
@@ -844,5 +826,163 @@ public class ToErpServiceImpl implements IToErpService {
|
||||
return AjaxResult.success(body);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public AjaxResult inStockConfirm(String[] stockInGuids) {
|
||||
for (String stockinGuid : stockInGuids) {
|
||||
InStockinN inStockinN =inStockinNService.selectInStockinNByStockinGuid(stockinGuid);
|
||||
if (inStockinN==null) {
|
||||
throw new RuntimeException("未找到对应单据,请检查");
|
||||
}
|
||||
if (inStockinN.getStatus()!= 3) {
|
||||
throw new RuntimeException("单据["+inStockinN.getStockinId()+"]状态不是正执行,请检查");
|
||||
}
|
||||
InStockinDetailN inStockinDetailN =new InStockinDetailN();
|
||||
inStockinDetailN.setStockinId(inStockinN.getStockinId());
|
||||
List<InStockinDetailN> stockinDetailNs = inStockinDetailNService.selectInStockinDetailNList(inStockinDetailN);
|
||||
if (CollUtil.isNotEmpty(stockinDetailNs)){
|
||||
boolean b = stockinDetailNs.stream().allMatch(x -> x.getFinishNum().equals(x.getSmNum()));
|
||||
if (!b){
|
||||
throw new RuntimeException("单据["+inStockinN.getStockinId()+"]扫码数量与实际入库数量不一致!");
|
||||
}
|
||||
}
|
||||
if (!inStockinN.getOrderSrc().equals("自建单")){
|
||||
//回传ERP
|
||||
try {
|
||||
ErpInStockinConfirmRequest request = new ErpInStockinConfirmRequest();
|
||||
request.setOrd(inStockinN.getErpStockinId());
|
||||
request.setDate5(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
|
||||
request.setComplete1(1);
|
||||
request.setIntro2(inStockinN.getRemark());
|
||||
request.setCustomerName(inStockinN.getCustomerName());
|
||||
request.setWeighbillNo(inStockinN.getWeighbillNo());
|
||||
request.setVehicleNo(inStockinN.getVehicleNo());
|
||||
List<ErpInStockinDetailConfirmRequest> detailList = getErp(stockinDetailNs);
|
||||
request.setKuinList(detailList);
|
||||
String json = objectMapper.writeValueAsString(request);
|
||||
if (!post(stockinConfirmUrl,json,"入库确认").getSuccess()) {
|
||||
throw new RuntimeException("回传ERP失败");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("回传ERP失败: {}", e.getMessage());
|
||||
throw new RuntimeException("回传ERP失败" );
|
||||
}
|
||||
}
|
||||
//处理单据 插入历史表
|
||||
inStockinN.setStatus(4);
|
||||
InStockinNFinish inStockinNFinish = new InStockinNFinish();
|
||||
BeanUtil.copyProperties(inStockinN, inStockinNFinish);
|
||||
inStockinNFinishService.insertInStockinNFinish(inStockinNFinish);
|
||||
inStockinDetailNFinishService.insertByStockInId(inStockinN.getStockinId());
|
||||
inStockinNService.deleteInStockinNByStockinGuid(inStockinN.getStockinGuid());
|
||||
inStockinDetailNService.deleteByStockInId(inStockinN.getStockinId());
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
private static List<ErpInStockinDetailConfirmRequest> getErp(List<InStockinDetailN> stockinDetailNs) {
|
||||
List<ErpInStockinDetailConfirmRequest> detailList = new ArrayList<>();
|
||||
for (InStockinDetailN detailN : stockinDetailNs) {
|
||||
ErpInStockinDetailConfirmRequest detailRequest = new ErpInStockinDetailConfirmRequest();
|
||||
detailRequest.setId(String.valueOf(detailN.getErpDetailId()));
|
||||
detailRequest.setNum1(detailN.getFinishNum());
|
||||
detailRequest.setAssistUnit(detailN.getAuxUnit());
|
||||
detailRequest.setAssistNum(detailN.getAuxQuantity());
|
||||
detailRequest.setKu("50"); // 仓库默认空
|
||||
detailRequest.setWareHousePositionID(""); // 货位默认空
|
||||
detailRequest.setPh(detailN.getBatchNo());
|
||||
detailRequest.setXlh(detailN.getSerialNo());
|
||||
detailRequest.setDatesc(detailN.getProductionDate());
|
||||
detailRequest.setDateyx(detailN.getExpiryDate());
|
||||
detailRequest.setDate2(detailN.getArrivalDate());
|
||||
detailRequest.setSysIcusIInheritIdIidI1(""); // 客户ID默认空
|
||||
detailList.add(detailRequest);
|
||||
}
|
||||
return detailList;
|
||||
}
|
||||
|
||||
public PostReturn post(String url, String jsonStr, String endpoint){
|
||||
PostReturn postReturn =new PostReturn();
|
||||
RequestLog requestLog = new RequestLog();
|
||||
DateTime startTime = DateUtil.date();
|
||||
requestLog.setRequestTime(DateUtil.format(startTime, "yyyy-MM-dd HH:mm:ss.SSS"));
|
||||
HttpResponse response = HttpRequest.post(url).header(TOKEN_KEY, login()).body(jsonStr).execute();
|
||||
String body = response.body();
|
||||
DateTime endTime = DateUtil.date();
|
||||
requestLog.setResponseTime(DateUtil.format(endTime, "yyyy-MM-dd HH:mm:ss.SSS"));
|
||||
requestLog.setRequestHeaders(JSONUtil.toJsonStr(response.headers()));
|
||||
requestLog.setResponseStatus(String.valueOf(response.getStatus()));
|
||||
requestLog.setDuration(String.valueOf(DateUtil.between(startTime, endTime, DateUnit.MS)));
|
||||
requestLog.setSourceSystem("wms");
|
||||
requestLog.setTargetSystem("erp");
|
||||
requestLog.setRequestUrl(url);
|
||||
requestLog.setRequestMethod("POST");
|
||||
requestLog.setRequestBody(jsonStr);
|
||||
requestLog.setResponseBody(body);
|
||||
requestLog.setEndpoint(endpoint);
|
||||
|
||||
boolean isSuccess = false;
|
||||
try {
|
||||
if (JSONUtil.isTypeJSON(body)) {
|
||||
JSONObject jsonObject = JSONUtil.parseObj(body);
|
||||
if (jsonObject.containsKey("Code")) {
|
||||
int code = jsonObject.getInt("Code");
|
||||
if (code == 200) {
|
||||
isSuccess = true;
|
||||
} else {
|
||||
log.error("ERP请求失败,Code: {}, Msg: {}", code, jsonObject.getStr("Msg"));
|
||||
}
|
||||
} else {
|
||||
log.error("ERP返回格式错误,未包含Code字段: {}", body);
|
||||
}
|
||||
} else {
|
||||
log.error("ERP返回非JSON格式: {}", body);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("解析ERP响应异常: {}", e.getMessage());
|
||||
}
|
||||
|
||||
requestLog.setIsSuccessful(isSuccess ? "1" : "0");
|
||||
requestLogService.insertRequestLog(requestLog);
|
||||
postReturn.setSuccess(isSuccess);
|
||||
postReturn.setBody(body);
|
||||
return postReturn;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 生成入库单据 -> 根据erp入库子单更新wms入库子单明细
|
||||
* @param erpInStockinetail
|
||||
*/
|
||||
public void AddStockinDetailByErpStockinDetail(ErpInStockinDetail erpInStockinetail) {
|
||||
|
||||
InStockinDetail inStockinDetail = new InStockinDetail();
|
||||
try {
|
||||
//向wms入库单据表同步erp主单信息
|
||||
inStockinDetail.setStockinDetailId(erpInStockinetail.getId().toString());//明细id
|
||||
inStockinDetail.setStockinGuid(erpInStockinetail.getSpare3());//入库主单guid
|
||||
inStockinDetail.setStockinId(erpInStockinetail.getKuin());//主单id
|
||||
inStockinDetail.setLotNo(erpInStockinetail.getPh());//批次
|
||||
inStockinDetail.setProductId(erpInStockinetail.getSpare2());//物料编号
|
||||
inStockinDetail.setAssignNum(erpInStockinetail.getQuantity().toString());//入库数量
|
||||
inStockinDetail.setWarehouseId("0");//库区
|
||||
inStockinDetail.setPrintDate(DateUtil.now());//库区
|
||||
inStockinDetail.setStatus("");//单据状态
|
||||
inStockinDetail.setRemark("");//入库备注
|
||||
|
||||
//更新/新增wms入库明细
|
||||
if (ObjUtil.isNotNull(inStockinDetailService.selectInStockinDetailByStockinGuid(inStockinDetail.getStockinGuid()))) {
|
||||
inStockinDetailService.updateInStockinDetail(inStockinDetail);
|
||||
}else{
|
||||
inStockinDetailService.insertInStockinDetail(inStockinDetail);
|
||||
}
|
||||
}catch(Exception e){
|
||||
log.error("生成/更新单据明细失败,主单据号:" + inStockinDetail.getStockinId() + ",异常信息:" + e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -40,14 +40,16 @@ public class ToWcsServiceImpl implements IToWcsService {
|
||||
|
||||
|
||||
@Override
|
||||
@Scheduled(fixedDelay=1500)
|
||||
// @Scheduled(fixedDelay=1500)
|
||||
public void pushOutMydoJob() {
|
||||
//查询所有未推送的料箱出库作业
|
||||
MydoJob mydoJobParam = new MydoJob();
|
||||
mydoJobParam.setStatus("1");
|
||||
List<String> list = new ArrayList<>();
|
||||
list.add("21");
|
||||
list.add("21");//自动分配出库
|
||||
list.add("26");
|
||||
list.add("23");//指定货位出库
|
||||
list.add("22");//空托盘出库
|
||||
mydoJobParam.setInOutIds(list);
|
||||
List<MydoJob> outMydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
|
||||
for (MydoJob outMydoJob : outMydoJobs) {
|
||||
|
||||
@@ -298,6 +298,9 @@ public class ToWmsServiceImpl implements IToWmsService {
|
||||
MydoJob outJob = outMydoJobs.get(0);
|
||||
outJob.setExecutionPhase("2");
|
||||
mydoJobService.updateMydoJob(outJob);
|
||||
BasCargoSpace basCargoSpace =basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(outJob.getCargoSpaceId());
|
||||
basCargoSpace.setStatus("1");
|
||||
basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -67,7 +67,7 @@ public class OutMydoJobController extends BaseController {
|
||||
return mydoJobService.OuthandInvalidation(jobIds);
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('job:outmydoJob:pointOut')")
|
||||
// @PreAuthorize("@ss.hasPermi('job:outmydoJob:pointOut')")
|
||||
@Log(title = "指定货位出库", businessType = BusinessType.INSERT)
|
||||
@RequestMapping("/pointOut")
|
||||
public AjaxResult pointOut(@RequestParam("groupCodingNo")String groupCodingNo, @RequestParam("outQuantity")String quantity)
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.ruoyi.job.mydojob.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
@@ -13,6 +14,7 @@ import java.util.List;
|
||||
* @author ruoyi
|
||||
* @date 2025-05-23
|
||||
*/
|
||||
@Data
|
||||
public class MydoJob extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
@@ -131,11 +133,15 @@ public class MydoJob extends BaseEntity
|
||||
|
||||
private List<String> inOutIds;
|
||||
|
||||
private String isAsc;
|
||||
|
||||
private String createLeftTime;
|
||||
private String createRightTime;
|
||||
|
||||
private String productId;
|
||||
|
||||
private String orderByColumn;
|
||||
|
||||
public String getProductId() {
|
||||
return productId;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.ruoyi.job.mydojobfinish.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
@@ -11,6 +12,7 @@ import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
* @author ruoyi
|
||||
* @date 2025-05-23
|
||||
*/
|
||||
@Data
|
||||
public class MydoJobFinish extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
@@ -111,6 +113,8 @@ public class MydoJobFinish extends BaseEntity
|
||||
@Excel(name = "重分标记")
|
||||
private String faultFlag;
|
||||
|
||||
private String orderByColumn;
|
||||
|
||||
public void setJobId(String jobId)
|
||||
{
|
||||
this.jobId = jobId;
|
||||
|
||||
@@ -13,6 +13,9 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@@ -60,13 +63,10 @@ public class RequestLogServiceImpl implements IRequestLogService
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public int insertRequestLog(RequestLog requestLog)
|
||||
{
|
||||
if (requestLog.getIsSuccessful().equals("1")){
|
||||
return requestLogMapper.insertRequestLog(requestLog);
|
||||
}else {
|
||||
return 0;
|
||||
}
|
||||
return requestLogMapper.insertRequestLog(requestLog);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -100,15 +100,15 @@ public class PdaServiceImp implements PdaService {
|
||||
mydoJobParam.setTrayCode(trayCodeMakeSure.getTrayCode());
|
||||
mydoJobParam.setStatus("3");
|
||||
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByExit(mydoJobParam);
|
||||
BasWarehouse basWarehouse = basWarehouseMapper.selectBasWarehouseByWarehouseId(mydoJobDetails.get(0).getWarehouseId());
|
||||
if("2".equals(basWarehouse.getWarehouseType()) && mydoJobDetails.isEmpty()){
|
||||
BasStock basStock = new BasStock();
|
||||
basStock.setTrayCode(trayCodeMakeSure.getTrayCode());
|
||||
List<BasStock> basStocks = basStockMapper.selectBasStockList(basStock);
|
||||
basStockMapper.deleteBasStockByStockIds((String[]) basStocks.stream().map(BasStock::getStockId).toArray());
|
||||
|
||||
}
|
||||
if(mydoJobDetails.isEmpty() && "1".equals(basWarehouse.getWarehouseType())){
|
||||
// BasWarehouse basWarehouse = basWarehouseMapper.selectBasWarehouseByWarehouseId(mydoJobDetails.get(0).getWarehouseId());
|
||||
// if("2".equals(basWarehouse.getWarehouseType()) && mydoJobDetails.isEmpty()){
|
||||
// BasStock basStock = new BasStock();
|
||||
// basStock.setTrayCode(trayCodeMakeSure.getTrayCode());
|
||||
// List<BasStock> basStocks = basStockMapper.selectBasStockList(basStock);
|
||||
// basStockMapper.deleteBasStockByStockIds((String[]) basStocks.stream().map(BasStock::getStockId).toArray());
|
||||
//
|
||||
// }
|
||||
if(mydoJobDetails.isEmpty() ){
|
||||
return AjaxResult.error("该物料没有出库作业,请检查");
|
||||
}
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
@@ -120,8 +120,6 @@ public class PdaServiceImp implements PdaService {
|
||||
} else {
|
||||
return AjaxResult.error( map.get("v_resultmsg").toString());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -246,8 +244,7 @@ public class PdaServiceImp implements PdaService {
|
||||
@Override
|
||||
public AjaxResult ktpout(TrayCodeMsg trayCodeMsg) {
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("v_warehouse_id", trayCodeMsg.getWarehouseId());
|
||||
map.put("v_exit_id", trayCodeMsg.getExitId());
|
||||
map.put("v_num", trayCodeMsg.getInQuantity());
|
||||
pdaMapper.ktpout(map);
|
||||
String result = map.get("v_result").toString();
|
||||
if ("10".equals(result)){
|
||||
|
||||
@@ -37,7 +37,6 @@ public class InStockinDetailNController extends BaseController
|
||||
/**
|
||||
* 查询入库子单列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:inStockinDetailN:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(InStockinDetailN inStockinDetailN)
|
||||
{
|
||||
@@ -49,7 +48,6 @@ public class InStockinDetailNController extends BaseController
|
||||
/**
|
||||
* 导出入库子单列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:inStockinDetailN:export')")
|
||||
@Log(title = "入库子单", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, InStockinDetailN inStockinDetailN)
|
||||
@@ -62,7 +60,6 @@ public class InStockinDetailNController extends BaseController
|
||||
/**
|
||||
* 获取入库子单详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:inStockinDetailN:query')")
|
||||
@GetMapping(value = "/{stockinDetailId}")
|
||||
public AjaxResult getInfo(@PathVariable("stockinDetailId") String stockinDetailId)
|
||||
{
|
||||
@@ -72,7 +69,6 @@ public class InStockinDetailNController extends BaseController
|
||||
/**
|
||||
* 新增入库子单
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:inStockinDetailN:add')")
|
||||
@Log(title = "入库子单", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody InStockinDetailN inStockinDetailN)
|
||||
@@ -83,7 +79,6 @@ public class InStockinDetailNController extends BaseController
|
||||
/**
|
||||
* 修改入库子单
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:inStockinDetailN:edit')")
|
||||
@Log(title = "入库子单", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody InStockinDetailN inStockinDetailN)
|
||||
@@ -94,7 +89,6 @@ public class InStockinDetailNController extends BaseController
|
||||
/**
|
||||
* 删除入库子单
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:inStockinDetailN:remove')")
|
||||
@Log(title = "入库子单", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{stockinDetailIds}")
|
||||
public AjaxResult remove(@PathVariable String[] stockinDetailIds)
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.ruoyi.system.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import lombok.Data;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
@@ -12,6 +14,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
|
||||
* @author zgw
|
||||
* @date 2025-12-17
|
||||
*/
|
||||
@Data
|
||||
public class InStockinDetailNFinish extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
@@ -147,6 +150,11 @@ public class InStockinDetailNFinish extends BaseEntity
|
||||
/** $column.columnComment */
|
||||
private String stockinDetailId;
|
||||
|
||||
|
||||
private BigDecimal smNum;
|
||||
|
||||
private BigDecimal finishNum;
|
||||
|
||||
public void setErpDetailId(Long erpDetailId)
|
||||
{
|
||||
this.erpDetailId = erpDetailId;
|
||||
|
||||
@@ -58,4 +58,6 @@ public interface IInStockinDetailNFinishService
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteInStockinDetailNFinishByStockinDetailId(String stockinDetailId);
|
||||
|
||||
void insertByStockInId(String stockinId);
|
||||
}
|
||||
|
||||
@@ -59,4 +59,5 @@ public interface IInStockinDetailNService
|
||||
*/
|
||||
public int deleteInStockinDetailNByStockinDetailId(String stockinDetailId);
|
||||
|
||||
void deleteByStockInId(String stockinId);
|
||||
}
|
||||
|
||||
@@ -93,4 +93,9 @@ public class InStockinDetailNFinishServiceImpl implements IInStockinDetailNFinis
|
||||
{
|
||||
return inStockinDetailNFinishMapper.deleteInStockinDetailNFinishByStockinDetailId(stockinDetailId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertByStockInId(String stockinId) {
|
||||
inStockinDetailNFinishMapper.insertByStockInId(stockinId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,5 +94,8 @@ public class InStockinDetailNServiceImpl implements IInStockinDetailNService
|
||||
return inStockinDetailNMapper.deleteInStockinDetailNByStockinDetailId(stockinDetailId);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void deleteByStockInId(String stockinId) {
|
||||
inStockinDetailNMapper.deleteByStockInId(stockinId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,9 +46,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="params.warehouseDataScope != null and params.warehouseDataScope !=''">
|
||||
${params.warehouseDataScope}
|
||||
</if>
|
||||
<if test="updateId != null and updateId != ''">
|
||||
and warehouse_id != #{updateId}
|
||||
</if>
|
||||
|
||||
@@ -14,21 +14,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
select stockin_id as id, status, '1' as type
|
||||
from in_stockin
|
||||
where status in ('1', '2', '3')
|
||||
${params.warehouseDataScope}
|
||||
</select>
|
||||
|
||||
<select id="selectStockoutStatusCount" resultMap="BillStatusCountResult">
|
||||
select stockout_id as id, status, '2' as type
|
||||
from out_stockout
|
||||
where status in ('1', '2', '3')
|
||||
${params.warehouseDataScope}
|
||||
</select>
|
||||
|
||||
<select id="selectStockcheckStatusCount" resultMap="BillStatusCountResult">
|
||||
select stock_check_id as id, status, '3' as type
|
||||
from check_stockin
|
||||
where status in ('1', '2', '3')
|
||||
${params.warehouseDataScope}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -8,7 +8,6 @@
|
||||
SELECT status, COUNT(*) as count
|
||||
FROM bas_cargo_space
|
||||
WHERE status IN ('1', '2', '3', '4', '5', '6')
|
||||
${params.warehouseDataScope}
|
||||
GROUP BY status
|
||||
ORDER BY status
|
||||
</select>
|
||||
|
||||
@@ -8,21 +8,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<select id="selectStockinFinishCount" resultType="Integer">
|
||||
select count(1) from in_stockin_finish
|
||||
where 1=1
|
||||
${params.warehouseDataScope}
|
||||
</select>
|
||||
|
||||
<!-- 查询已完成出库单数量 -->
|
||||
<select id="selectStockoutFinishCount" resultType="Integer">
|
||||
select count(1) from out_stockout_finish
|
||||
where 1=1
|
||||
${params.warehouseDataScope}
|
||||
</select>
|
||||
|
||||
<!-- 查询已完成盘点单数量 -->
|
||||
<select id="selectStockcheckFinishCount" resultType="Integer">
|
||||
select count(1) from check_stockin_finish
|
||||
where 1=1
|
||||
${params.warehouseDataScope}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -369,9 +369,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
mjd.spare9,
|
||||
mjd.spec,
|
||||
mjd.unit,
|
||||
mj.tray_code,
|
||||
mj.warehosue_id
|
||||
|
||||
mj.tray_code
|
||||
-- mj.warehosue_id
|
||||
from mydo_job_detail mjd
|
||||
left join bas_product bp on mjd.product_id = bp.product_id
|
||||
left join mydo_job mj on mjd.job_id = mj.job_id
|
||||
|
||||
@@ -100,7 +100,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
${params.warehouseDataScope}
|
||||
</if>
|
||||
</where>
|
||||
order by mj.create_time desc
|
||||
<if test="orderByColumn != null and orderByColumn != ''">
|
||||
order by ${orderByColumn} ${isAsc}
|
||||
</if>
|
||||
<if test="orderByColumn == null or orderByColumn == ''">
|
||||
order by mj.create_time desc
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="selectMydoJobFinishListByMydoJob" parameterType="MydoJob" resultMap="MydoJobFinishResult">
|
||||
@@ -144,7 +149,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
${params.warehouseDataScope}
|
||||
</if>
|
||||
</where>
|
||||
order by mj.create_time desc
|
||||
<if test="orderByColumn != null and orderByColumn != ''">
|
||||
order by ${orderByColumn} ${isAsc}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="selectMydoJobFinishByJobId" parameterType="String" resultMap="MydoJobFinishResult">
|
||||
|
||||
@@ -94,11 +94,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="params.warehouseDataScope != null and params.warehouseDataScope !=''">
|
||||
${params.warehouseDataScope}
|
||||
</if>
|
||||
</where>
|
||||
order by mj.create_time desc
|
||||
<if test="orderByColumn != null and orderByColumn != ''">
|
||||
order by ${orderByColumn} ${isAsc}
|
||||
</if>
|
||||
<if test="orderByColumn == null or orderByColumn == ''">
|
||||
order by mj.create_time desc
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="selectMydoJobByJobId" parameterType="String" resultMap="MydoJobResult">
|
||||
|
||||
@@ -121,8 +121,7 @@
|
||||
|
||||
<select id="ktpout" parameterType="java.util.Map" statementType="CALLABLE">
|
||||
{call proc_tp_out(
|
||||
#{v_warehouse_id,mode=IN,jdbcType=VARCHAR},
|
||||
#{v_exit_id,mode=IN,jdbcType=VARCHAR},
|
||||
#{v_num,mode=IN,jdbcType=VARCHAR},
|
||||
#{v_result,mode=OUT,jdbcType=INTEGER},
|
||||
#{v_resultmsg,mode=OUT,jdbcType=VARCHAR}
|
||||
)}
|
||||
|
||||
@@ -41,10 +41,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="stockinDetailId" column="stockin_detail_id" />
|
||||
<result property="smNum" column="sm_num" />
|
||||
<result property="finishNum" column="finish_num" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectInStockinDetailNFinishVo">
|
||||
select erp_detail_id, stockin_guid, stockin_id, product_name, product_model, unit, unit_price, aux_unit, attr1, attr2, quantity, in_quantity, aux_quantity, total_price, cost_unit_price, cost_total_price, accounting_cost_total, accounting_quantity, accounting_status, batch_no, serial_no, production_date, expiry_date, arrival_date, remark, custom1, custom2, custom3, custom4, custom5, custom6, stevedore, order_src, create_time, update_time, stockin_detail_id from in_stockin_detail_n_finish
|
||||
select erp_detail_id, stockin_guid, stockin_id, product_name, product_model, unit, unit_price, aux_unit, attr1, attr2, quantity, in_quantity, aux_quantity, total_price, cost_unit_price, cost_total_price, accounting_cost_total, accounting_quantity, accounting_status, batch_no, serial_no, production_date, expiry_date, arrival_date, remark, custom1, custom2, custom3, custom4, custom5, custom6, stevedore, order_src, create_time, update_time, stockin_detail_id ,sm_num , finish_num from in_stockin_detail_n_finish
|
||||
</sql>
|
||||
|
||||
<select id="selectInStockinDetailNFinishList" parameterType="InStockinDetailNFinish" resultMap="InStockinDetailNFinishResult">
|
||||
|
||||
Reference in New Issue
Block a user