Browse Source

生产退料功能

master
shenzhouyu 1 year ago
parent
commit
cd369a1157
  1. 17
      src/main/java/com/gaotao/modules/api/entity/issueAndReturnVo/InventoryPartVo.java
  2. 11
      src/main/java/com/gaotao/modules/api/service/IfsApiIssueAndReturnService.java
  3. 48
      src/main/java/com/gaotao/modules/api/service/impl/IfsApiIssueAndReturnServiceImpl.java
  4. 24
      src/main/java/com/gaotao/modules/production/controller/ProductionReturnController.java
  5. 5
      src/main/java/com/gaotao/modules/production/entity/dto/ProductionReturnDto.java
  6. 90
      src/main/java/com/gaotao/modules/production/entity/vo/IssueForShopOrderVo.java
  7. 3
      src/main/java/com/gaotao/modules/production/service/ProductionReturnService.java
  8. 13
      src/main/java/com/gaotao/modules/production/service/impl/ProductionReturnServiceImpl.java

17
src/main/java/com/gaotao/modules/api/entity/issueAndReturnVo/InventoryPartVo.java

@ -0,0 +1,17 @@
package com.gaotao.modules.api.entity.issueAndReturnVo;
import lombok.Data;
@Data
public class InventoryPartVo {
private String contract;
private String description;
private String netVolume;
private String netWeight;
private String partNo;
private String partType;
private String typeDesignation;
private String unitMeasure;
/*耐久天数*/
private int durabilityDays;
}

11
src/main/java/com/gaotao/modules/api/service/IfsApiIssueAndReturnService.java

@ -0,0 +1,11 @@
package com.gaotao.modules.api.service;
import com.gaotao.modules.api.entity.issueAndReturnVo.InventoryPartVo;
import java.util.List;
public interface IfsApiIssueAndReturnService {
List<InventoryPartVo> getInventoryPart(String partNo, String site);
}

48
src/main/java/com/gaotao/modules/api/service/impl/IfsApiIssueAndReturnServiceImpl.java

@ -0,0 +1,48 @@
package com.gaotao.modules.api.service.impl;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.gaotao.common.exception.XJException;
import com.gaotao.common.utils.HttpUtils;
import com.gaotao.modules.api.entity.issueAndReturnVo.InventoryPartVo;
import com.gaotao.modules.api.service.IfsApiIssueAndReturnService;
import com.gaotao.modules.production.entity.vo.IssueForShopOrderVo;
import jakarta.transaction.Transactional;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class IfsApiIssueAndReturnServiceImpl implements IfsApiIssueAndReturnService {
@Value("${custom.ifs-url}")
private String ifsUrl;
@Value("${custom.ifs-ifsDBName}")
private String ifsDBName;
@Value("${custom.ifs-domainUserID}")
private String domainUserID;
@Override
public List<InventoryPartVo> getInventoryPart(String partNo, String site){
try{
Map<String, Object> params = Map.of(
"ifsDBName", ifsDBName,
"domainUserID", domainUserID,
"ifsSiteID", site,
"ifsPartNo", partNo
);
ObjectMapper objectMapper = new ObjectMapper();
String jsonBody = objectMapper.writeValueAsString(params);
String ifsResponse = HttpUtils.doGetWithBody(ifsUrl+"InventoryPart",jsonBody,null);
ObjectMapper mapper = new ObjectMapper();
List<InventoryPartVo> inventoryPartVos = mapper.readValue(ifsResponse, new TypeReference<List<InventoryPartVo>>() {
});
return inventoryPartVos;
}catch (Exception e){
throw new XJException("获取IFS物料列表失败: " + e.getMessage());
}
}
}

24
src/main/java/com/gaotao/modules/production/controller/ProductionReturnController.java

@ -5,8 +5,10 @@ package com.gaotao.modules.production.controller;
*/
import com.gaotao.common.utils.R;
import com.gaotao.modules.api.entity.issueAndReturnVo.InventoryPartVo;
import com.gaotao.modules.notify.entity.vo.ShopOrderVo;
import com.gaotao.modules.production.entity.dto.ProductionReturnDto;
import com.gaotao.modules.production.entity.vo.IssueForShopOrderVo;
import com.gaotao.modules.production.service.ProductionIssueService;
import com.gaotao.modules.production.service.ProductionReturnService;
import org.springframework.beans.factory.annotation.Autowired;
@ -36,4 +38,26 @@ public class ProductionReturnController {
return R.error(e.getMessage());
}
}
/**
* 获取工单发料记录列表直接退料
*/
@PostMapping("/getIssueForShopOrder")
public R getIssueForShopOrder(@RequestBody ProductionReturnDto dto){
try {
List<IssueForShopOrderVo> issueForShopOrder = productionReturnService.getIssueForShopOrder(dto.getWorkOrderNo(), dto.getSite());
return R.ok().put("issueForShopOrder", issueForShopOrder);
} catch (Exception e) {
return R.error(e.getMessage());
}
}
/**
* 获取物料库存信息
*/
@PostMapping("/getInventoryPart")
public R getInventoryPart(@RequestBody ProductionReturnDto dto){
List<InventoryPartVo> inventoryPart = productionReturnService.getInventoryPart(dto.getPartNo(), dto.getSite());
return R.ok().put("inventoryPart", inventoryPart);
}
}

5
src/main/java/com/gaotao/modules/production/entity/dto/ProductionReturnDto.java

@ -50,4 +50,9 @@ public class ProductionReturnDto implements Serializable {
*/
private String workOrderNo;
/**
* 物料编号
*/
private String partNo;
}

90
src/main/java/com/gaotao/modules/production/entity/vo/IssueForShopOrderVo.java

@ -1,26 +1,80 @@
package com.gaotao.modules.production.entity.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class IssueForShopOrderVo {
private String SOURCE_REF1;
private String SOURCE_REF2;
private String SOURCE_REF3;
private String SOURCE_REF4;
private long TRANSACTION_ID;
private long ACCOUNTING_ID;
private String CONTRACT;
private String PART_NO;
private String LOCATION_NO;
private String LOT_BATCH_NO;
private String SERIAL_NO;
private String WAIV_DEV_REJ_NO;
private int ACTIVITY_SEQ;
private String ENG_CHG_LEVEL;
private BigDecimal QUANTITY;
private BigDecimal QTY_REVERSED;
private long HANDLING_UNIT_ID;
}
// 对应JSON中的 SOURCE_REF1使用@JsonProperty指定JSON字段名避免映射错误
@JsonProperty("SOURCE_REF1")
private String sourceRef1;
// 对应JSON中的 SOURCE_REF2
@JsonProperty("SOURCE_REF2")
private String sourceRef2;
// 对应JSON中的 SOURCE_REF3
@JsonProperty("SOURCE_REF3")
private String sourceRef3;
// 对应JSON中的 SOURCE_REF4JSON中为字符串"1"故用String类型若实际为数字可改为Integer
@JsonProperty("SOURCE_REF4")
private String sourceRef4;
// 对应JSON中的 TRANSACTION_ID整数型用Long避免超出Integer范围
@JsonProperty("TRANSACTION_ID")
private Long transactionId;
// 对应JSON中的 ACCOUNTING_ID整数型用Long避免超出Integer范围
@JsonProperty("ACCOUNTING_ID")
private Long accountingId;
// 对应JSON中的 CONTRACT字符串类型"55"
@JsonProperty("CONTRACT")
private String contract;
// 对应JSON中的 PART_NO物料编号
@JsonProperty("PART_NO")
private String partNo;
// 对应JSON中的 LOCATION_NO库位编号
@JsonProperty("LOCATION_NO")
private String locationNo;
// 对应JSON中的 LOT_BATCH_NO批次号
@JsonProperty("LOT_BATCH_NO")
private String lotBatchNo;
// 对应JSON中的 SERIAL_NO序列号
@JsonProperty("SERIAL_NO")
private String serialNo;
// 对应JSON中的 WAIV_DEV_REJ_NO豁免/偏差/拒收编号此处为"*"
@JsonProperty("WAIV_DEV_REJ_NO")
private String waivDevRejNo;
// 对应JSON中的 ACTIVITY_SEQ活动序列整数型
@JsonProperty("ACTIVITY_SEQ")
private Integer activitySeq;
// 对应JSON中的 ENG_CHG_LEVEL工程变更等级字符串类型
@JsonProperty("ENG_CHG_LEVEL")
private String engChgLevel;
// 对应JSON中的 QUANTITY数量含小数用BigDecimal保证精度避免浮点误差
@JsonProperty("QUANTITY")
private BigDecimal quantity;
// 对应JSON中的 QTY_REVERSED反向数量含小数用BigDecimal
@JsonProperty("QTY_REVERSED")
private BigDecimal qtyReversed;
// 对应JSON中的 HANDLING_UNIT_ID处理单元ID整数型
@JsonProperty("HANDLING_UNIT_ID")
private Integer handlingUnitId;
}

3
src/main/java/com/gaotao/modules/production/service/ProductionReturnService.java

@ -1,5 +1,6 @@
package com.gaotao.modules.production.service;
import com.gaotao.modules.api.entity.issueAndReturnVo.InventoryPartVo;
import com.gaotao.modules.notify.entity.vo.ShopOrderVo;
import com.gaotao.modules.production.entity.vo.IssueForShopOrderVo;
@ -21,4 +22,6 @@ public interface ProductionReturnService {
* @return
*/
List<IssueForShopOrderVo> getIssueForShopOrder(String workOrderNo, String site);
List<InventoryPartVo> getInventoryPart(String partNo, String site);
}

13
src/main/java/com/gaotao/modules/production/service/impl/ProductionReturnServiceImpl.java

@ -4,11 +4,15 @@ import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.gaotao.common.exception.XJException;
import com.gaotao.common.utils.HttpUtils;
import com.gaotao.modules.api.entity.issueAndReturnVo.InventoryPartVo;
import com.gaotao.modules.api.service.IfsApiIssueAndReturnService;
import com.gaotao.modules.notify.entity.vo.ShopOrderMaterialVo;
import com.gaotao.modules.notify.entity.vo.ShopOrderVo;
import com.gaotao.modules.production.entity.vo.IssueForShopOrderVo;
import com.gaotao.modules.production.service.ProductionIssueService;
import com.gaotao.modules.production.service.ProductionReturnService;
import jakarta.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@ -25,6 +29,8 @@ public class ProductionReturnServiceImpl implements ProductionReturnService {
private String ifsDBName;
@Value("${custom.ifs-domainUserID}")
private String domainUserID;
@Autowired
private IfsApiIssueAndReturnService ifsApiIssueAndReturnService;
@Override
public List<ShopOrderVo> getReturnWorkOrderInfo(String workOrderNo, String site) {
@ -82,6 +88,13 @@ public class ProductionReturnServiceImpl implements ProductionReturnService {
}
@Override
@Transactional
public List<InventoryPartVo> getInventoryPart(String partNo, String site) {
List<InventoryPartVo> part = ifsApiIssueAndReturnService.getInventoryPart(partNo, site);
return part;
}
public boolean validateWorkOrderStatus(String workOrderNo, String site) {
// 工单状态为已下达或已开工时允许发料
return true;

Loading…
Cancel
Save