From fdec63ed357fcde85e218a5db087c8d6e7f19dfb Mon Sep 17 00:00:00 2001 From: skyouc <958836976@qq.com> Date: 星期一, 13 十月 2025 13:48:21 +0800 Subject: [PATCH] open-api添加单据下发,单据修改,单据删除接口 --- rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WmsOrderItemParam.java | 56 +++++ rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsErpController.java | 85 ++++++++ rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpQueryParams.java | 15 + rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/CommonStatus.java | 21 ++ rsf-open-api/src/main/resources/mapper/WmsErpMapper.xml | 20 ++ rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpOpParams.java | 37 +++ rsf-open-api/src/main/resources/application-dev.yml | 2 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/ErpQueryController.java | 1 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/QueryOrderParam.java | 2 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrderParams.java | 3 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java | 12 + rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsErpService.java | 13 + rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java | 5 rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsErpServiceImpl.java | 165 ++++++++++++++++ rsf-open-api/src/main/java/com/vincent/rsf/openApi/mapper/WmsErpMapper.java | 12 + rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java | 5 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java | 11 + rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java | 60 ++++- rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrdersItem.java | 3 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/dto/OrderDto.java | 57 +++++ rsf-server/src/main/resources/application-dev.yml | 2 21 files changed, 567 insertions(+), 20 deletions(-) diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsErpController.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsErpController.java new file mode 100644 index 0000000..8afd3a6 --- /dev/null +++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsErpController.java @@ -0,0 +1,85 @@ +package com.vincent.rsf.openApi.controller; + + +import com.vincent.rsf.framework.exception.CoolException; +import com.vincent.rsf.openApi.entity.dto.CommonResponse; +import com.vincent.rsf.openApi.entity.params.ErpOpParams; +import com.vincent.rsf.openApi.service.WmsErpService; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Objects; + +@RestController +@RequestMapping("/erp") +public class WmsErpController { + + @Autowired + private WmsErpService wmsErpService; + + /** + * @author Ryan + * @date 2025/9/27 + * @description: 璁㈠崟淇℃伅鏌ヨ + * @version 1.0 + */ + @ApiOperation("璁㈠崟淇℃伅鏌ヨ") + @PostMapping("/order") + public CommonResponse getOrders(@RequestBody ErpOpParams params) { + if (Objects.isNull(params)) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + return wmsErpService.getOrderInfo(params); + } + + + /** + * 璁㈠崟淇敼 + * @param params + * @return + */ + @ApiOperation("鍗曟嵁淇敼") + @PostMapping("/order/upadte") + public CommonResponse modifyOrderDtel(@RequestBody ErpOpParams params) { + if (Objects.isNull(params)) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + return wmsErpService.updateOrderDetl(params); + } + + + /** + * 璁㈠崟鏂板 + * @param params + * @return + */ + @ApiOperation("鏂板鍗曟嵁") + @PostMapping("/order/add") + public CommonResponse orderAdd(@RequestBody ErpOpParams params) { + if (Objects.isNull(params)) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + return wmsErpService.updateOrderDetl(params); + } + + + /** + * 鍒犻櫎璁㈠崟 + * @param params + * @return + */ + @ApiOperation("鍒犻櫎璁㈠崟") + @PostMapping("/order/del") + public CommonResponse orderDel(@RequestBody ErpOpParams params) { + if (Objects.isNull(params)) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + return wmsErpService.orderDel(params); + } + + +} diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java index 5d04aa1..1e109fe 100644 --- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java +++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java @@ -7,4 +7,16 @@ public static String callBack = "/rsf-server/wcs/receive/ex/msg"; + + //璁㈠崟淇℃伅鏌ヨ + public static String QUERY_ORDER_AND_DETLS = "/rsf-server/erp/query/order"; + + + //璁㈠崟淇℃伅淇敼/娣诲姞 + public static String MODIFY_ORDER_DETLS = "/rsf-server/order/sync/orders/update"; + + //鍒犻櫎鍗曟嵁淇℃伅 + public static String ORDER_DEL = "/rsf-server/order/sync/orders/delete"; + + } diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/dto/OrderDto.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/dto/OrderDto.java new file mode 100644 index 0000000..819e1ad --- /dev/null +++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/dto/OrderDto.java @@ -0,0 +1,57 @@ +package com.vincent.rsf.openApi.entity.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +@ApiModel(value = "OrderDto", description = "璁㈠崟淇℃伅") +public class OrderDto { + + /** + * 鍗曞彿 + */ + @ApiModelProperty("璁㈠崟鍙�") + private String orderNo; + + /** + * PO鍗曞彿 + */ + @ApiModelProperty(value = "PO鍗曞彿") + private String poCode; + + /** + * 鍗曟嵁绫诲瀷 + */ + @ApiModelProperty(value = "鍗曟嵁绫诲瀷") + private String type; + + /** + * 涓氬姟绫诲瀷 + */ + @ApiModelProperty(value = "涓氬姟绫诲瀷") + private String wkType; + + /** + * 閫佽揣鏁伴噺 + */ + @ApiModelProperty(value = "閫佽揣鏁伴噺") + private Double anfme; + + + @ApiModelProperty("鎵ц鏁伴噺") + private Double workQty; + + /** + * 宸叉敹鏁伴噺 + */ + @ApiModelProperty(value = "宸叉敹鏁伴噺") + private Double qty; + + + @ApiModelProperty("鎵ц鐘舵��") + private Short exceStatus; + +} diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpOpParams.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpOpParams.java new file mode 100644 index 0000000..45c2a34 --- /dev/null +++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpOpParams.java @@ -0,0 +1,37 @@ +package com.vincent.rsf.openApi.entity.params; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +@ApiModel(value = "ErpOpParams", description = "ERP鎿嶄綔璇锋眰鍙傛暟") +public class ErpOpParams { + + /** + * 鍗曞彿 + */ + @ApiModelProperty("璁㈠崟鍙�") + private String orderNo; + + @ApiModelProperty("涓氬姟绫诲瀷") + private String wkType; + + @ApiModelProperty("璁㈠崟绫诲瀷") + private String type; + + @ApiModelProperty("鏁伴噺") + private Double anfme; + + @ApiModelProperty("鎵ц鐘舵��") + private Short exceStatus; + + @ApiModelProperty("璁㈠崟鏄庣粏") + private List<WmsOrderItemParam> orderItems; + +} diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpQueryParams.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpQueryParams.java new file mode 100644 index 0000000..078e01e --- /dev/null +++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpQueryParams.java @@ -0,0 +1,15 @@ +package com.vincent.rsf.openApi.entity.params; + + +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +@ApiModel(value = "ErpQueryParams", description = "ERP鏌ヨ鍙傛暟") +public class ErpQueryParams { + + + +} diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WmsOrderItemParam.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WmsOrderItemParam.java new file mode 100644 index 0000000..75e00de --- /dev/null +++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WmsOrderItemParam.java @@ -0,0 +1,56 @@ +package com.vincent.rsf.openApi.entity.params; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +@ApiModel(value = "WmsOrderItemParam", description = "璁㈠崟鏄庣粏鍙傛暟") +public class WmsOrderItemParam { + + @ApiModelProperty("鐗╂枡缂栫爜") + private String matnrCode; + + @ApiModelProperty("鐗╂枡鍚嶇О") + private String maktx; + + @ApiModelProperty("瀹㈠崟鍙�") + private String platOrderCode; + + @ApiModelProperty("骞冲彴鏍囪瘑锛堣鍙凤級") + private String platItemId; + + @ApiModelProperty("宸ュ崟鍙�") + private String platWorkCode; + + @ApiModelProperty("椤圭洰鍙�") + private String projectCode; + + @ApiModelProperty("鐜伴噾绁ㄥ彿") + private String crushNo; + + @ApiModelProperty("瑙勬牸") + private String spec; + + @ApiModelProperty("鍨嬪彿") + private String model; + + @ApiModelProperty("鏁伴噺") + private Double anfme; + + @ApiModelProperty("搴撳瓨鍗曚綅") + private String unit; + + @ApiModelProperty("鎵规") + private String batch; + + @ApiModelProperty("宸叉敹鏁伴噺") + private Double qty; + + @ApiModelProperty("鏉″舰鐮�") + private String barcode; + +} diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/mapper/WmsErpMapper.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/mapper/WmsErpMapper.java new file mode 100644 index 0000000..b26f605 --- /dev/null +++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/mapper/WmsErpMapper.java @@ -0,0 +1,12 @@ +package com.vincent.rsf.openApi.mapper; + +import com.vincent.rsf.openApi.entity.dto.OrderDto; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +@Mapper +public interface WmsErpMapper { + + OrderDto getOrderByNo(@Param("orderNo") String orderNo); +} diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsErpService.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsErpService.java new file mode 100644 index 0000000..9997c7d --- /dev/null +++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsErpService.java @@ -0,0 +1,13 @@ +package com.vincent.rsf.openApi.service; + +import com.vincent.rsf.openApi.entity.dto.CommonResponse; +import com.vincent.rsf.openApi.entity.params.ErpOpParams; + +public interface WmsErpService { + + CommonResponse getOrderInfo(ErpOpParams params); + + CommonResponse updateOrderDetl(ErpOpParams params); + + CommonResponse orderDel(ErpOpParams params); +} diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsErpServiceImpl.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsErpServiceImpl.java new file mode 100644 index 0000000..f939215 --- /dev/null +++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsErpServiceImpl.java @@ -0,0 +1,165 @@ +package com.vincent.rsf.openApi.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.cfg.CoercionAction; +import com.fasterxml.jackson.databind.cfg.CoercionInputShape; +import com.vincent.rsf.framework.exception.CoolException; +import com.vincent.rsf.openApi.config.PlatformProperties; +import com.vincent.rsf.openApi.entity.constant.WmsConstant; +import com.vincent.rsf.openApi.entity.dto.CommonResponse; +import com.vincent.rsf.openApi.entity.dto.OrderDto; +import com.vincent.rsf.openApi.entity.params.ErpOpParams; +import com.vincent.rsf.openApi.service.WmsErpService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import java.util.*; + +@Slf4j +@Service("WmsErpService") +public class WmsErpServiceImpl implements WmsErpService { + + @Autowired + private PlatformProperties.WmsApi wmsApi; + + @Autowired + private RestTemplate restTemplate; + + /** + * 鑾峰彇璁㈠崟鏄庣粏 + * + * @param params + * @return + */ + @Override + public CommonResponse getOrderInfo(ErpOpParams params) { + if (Objects.isNull(params.getOrderNo()) || params.getOrderNo().isEmpty()) { + throw new CoolException("璁㈠崟鍙蜂笉鑳戒负绌猴紒锛�"); + } + /**WMS鍩虹閰嶇疆閾炬帴*/ + String rcsUrl = wmsApi.getHost() + ":" + wmsApi.getPort() + WmsConstant.QUERY_ORDER_AND_DETLS; + log.info("鏌ヨ璁㈠崟淇℃伅鍙婄姸鎬侊細 {}锛� 璇锋眰鍙傛暟锛� {}", rcsUrl, JSONObject.toJSONString(params)); + HttpHeaders headers = new HttpHeaders(); + headers.add("Content-Type", "application/json"); + headers.add("api-version", "v2.0"); + HttpEntity httpEntity = new HttpEntity(params, headers); + ResponseEntity<String> exchange = restTemplate.exchange(rcsUrl, HttpMethod.POST, httpEntity, String.class); + log.info("鏌ヨ鍝嶅簲缁撴灉锛� {}", exchange); + if (Objects.isNull(exchange.getBody())) { + throw new CoolException("鏌ヨ澶辫触锛侊紒"); + } else { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.coercionConfigDefaults().setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty); + try { + CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class); + if (result.getCode() == 200) { + JSONObject object = JSONObject.parseObject(JSONObject.toJSONString(result.getData())); + OrderDto dto = new OrderDto(); + dto.setOrderNo(object.getString("code")).setAnfme(object.getDouble("anfme")).setType(object.getString("type")).setWkType(object.getString("wkType")).setQty(object.getDouble("qty")).setPoCode(object.getString("poCode")).setExceStatus(object.getShort("exceStatus")).setWorkQty(object.getDouble("workQty")); + result.setData(dto); + return result; + } else { + throw new CoolException("鏌ヨ澶辫触锛侊紒"); + } + } catch (JsonProcessingException e) { + throw new CoolException(e.getMessage()); + } + } + } + + /** + * 璁㈠崟淇敼 + * + * @param params + * @return + */ + @Override + public CommonResponse updateOrderDetl(ErpOpParams params) { + if (Objects.isNull(params.getOrderNo()) || params.getOrderNo().isEmpty()) { + throw new CoolException("璁㈠崟鍙蜂笉鑳戒负绌猴紒锛�"); + } + /**WMS鍩虹閰嶇疆閾炬帴*/ + String wmsUrl = wmsApi.getHost() + ":" + wmsApi.getPort() + WmsConstant.MODIFY_ORDER_DETLS; + log.info("淇敼璁㈠崟淇℃伅鍙婄姸鎬侊細 {}锛� 璇锋眰鍙傛暟锛� {}", wmsUrl, JSONObject.toJSONString(params)); + HttpHeaders headers = new HttpHeaders(); + headers.add("Content-Type", "application/json"); + headers.add("api-version", "v2.0"); + + List<Map<String, Object>> maps = new ArrayList<>(); + Map<String, Object> mapParams = new HashMap<>(); + mapParams.put("orderNo", Arrays.asList(params.getOrderNo())); + mapParams.put("anfme", params.getAnfme()); + mapParams.put("type", params.getType()); + mapParams.put("wkType", params.getWkType()); + mapParams.put("exceStatus", params.getExceStatus()); + mapParams.put("orderItems", params.getOrderItems()); + maps.add(mapParams); + + HttpEntity httpEntity = new HttpEntity(maps, headers); + ResponseEntity<String> exchange = restTemplate.exchange(wmsUrl, HttpMethod.POST, httpEntity, String.class); + log.info("璁㈠崟淇敼杩斿洖缁撴灉锛� {}", exchange); + if (Objects.isNull(exchange.getBody())) { + throw new CoolException("鏌ヨ澶辫触锛侊紒"); + } else { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.coercionConfigDefaults().setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty); + try { + CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class); + if (result.getCode() == 200) { +// JSONObject object = JSONObject.parseObject(JSONObject.toJSONString(result.getData())); + return result; + } else { + throw new CoolException("鏌ヨ澶辫触锛侊紒"); + } + } catch (JsonProcessingException e) { + throw new CoolException(e.getMessage()); + } + } + } + + /** + * 鍒犻櫎鍗曟嵁 + * @param params + * @return + */ + @Override + public CommonResponse orderDel(ErpOpParams params) { + if (Objects.isNull(params.getOrderNo()) || params.getOrderNo().isEmpty()) { + throw new CoolException("璁㈠崟鍙蜂笉鑳戒负绌猴紒锛�"); + } + /**WMS鍩虹閰嶇疆閾炬帴*/ + String rcsUrl = wmsApi.getHost() + ":" + wmsApi.getPort() + WmsConstant.ORDER_DEL; + log.info("鏌ヨ璁㈠崟淇℃伅鍙婄姸鎬侊細 {}锛� 璇锋眰鍙傛暟锛� {}", rcsUrl, JSONObject.toJSONString(params)); + HttpHeaders headers = new HttpHeaders(); + headers.add("Content-Type", "application/json"); + headers.add("api-version", "v2.0"); + HttpEntity httpEntity = new HttpEntity(params, headers); + ResponseEntity<String> exchange = restTemplate.exchange(rcsUrl, HttpMethod.POST, httpEntity, String.class); + log.info("鏌ヨ鍝嶅簲缁撴灉锛� {}", exchange); + if (Objects.isNull(exchange.getBody())) { + throw new CoolException("鏌ヨ澶辫触锛侊紒"); + } else { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.coercionConfigDefaults().setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty); + try { + CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class); + if (result.getCode() == 200) { + return result; + } else { + throw new CoolException("鏌ヨ澶辫触锛侊紒"); + } + } catch (JsonProcessingException e) { + throw new CoolException(e.getMessage()); + } + } + } + +} diff --git a/rsf-open-api/src/main/resources/application-dev.yml b/rsf-open-api/src/main/resources/application-dev.yml index 2d214ee..646090f 100644 --- a/rsf-open-api/src/main/resources/application-dev.yml +++ b/rsf-open-api/src/main/resources/application-dev.yml @@ -65,4 +65,4 @@ #閾炬帴 host: http://127.0.0.1 #绔彛 - port: 8081 \ No newline at end of file + port: 8085 \ No newline at end of file diff --git a/rsf-open-api/src/main/resources/mapper/WmsErpMapper.xml b/rsf-open-api/src/main/resources/mapper/WmsErpMapper.xml new file mode 100644 index 0000000..8dffc3f --- /dev/null +++ b/rsf-open-api/src/main/resources/mapper/WmsErpMapper.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.vincent.rsf.openApi.mapper.WmsErpMapper"> + + <select id="getOrderByNo" resultType="com.vincent.rsf.openApi.entity.dto.OrderDto"> + SELECT + `code` AS order_no, + po_code, + type, + wk_type, + anfme, + work_qty, + qty, + exce_status + FROM + man_asn_order + WHERE + `code` = #{orderNo} + </select> +</mapper> diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/ErpQueryController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/ErpQueryController.java index afd0384..50168ab 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/ErpQueryController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/ErpQueryController.java @@ -38,6 +38,7 @@ @Autowired private ReceiveMsgService receiveMsgService; + @Autowired private MatnrGroupService matnrGroupService; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java index aa18dcf..3061e4b 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java @@ -91,7 +91,7 @@ /** * @author Ryan * @date 2025/8/19 - * @description: 鍚屾鐩樼偣鍗曟嵁 + * @description: 鏀惰揣閫氱煡鍗曞悓姝� * @version 1.0 */ @ApiOperation("鍚屾鍗曟嵁") @@ -164,7 +164,8 @@ if (Objects.isNull(orders) || orders.isEmpty()) { return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); } - return receiveMsgService.syncOrderUpdate(orders); +// return receiveMsgService.syncOrderUpdate(orders); + return receiveMsgService.syncCheckOrder(orders, getLoginUserId()); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/QueryOrderParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/QueryOrderParam.java index c0ee2a8..1578750 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/QueryOrderParam.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/QueryOrderParam.java @@ -18,7 +18,7 @@ private String type; @ApiModelProperty("璁㈠崟鍙�") - private List<String> orderNo; + private String orderNo; } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrderParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrderParams.java index 1b352a2..ae5afc5 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrderParams.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrderParams.java @@ -21,6 +21,9 @@ @ApiModelProperty("涓氬姟绫诲瀷") private String wkType; + @ApiModelProperty("鍗曟嵁绫诲瀷") + private String type; + @ApiModelProperty("鍗曞彿") private String orderNo; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrdersItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrdersItem.java index 2a743ad..f1d3d99 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrdersItem.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrdersItem.java @@ -63,4 +63,7 @@ @ApiModelProperty("鏉″舰鐮�") private String barcode; + @ApiModelProperty("鐜伴噾绁ㄥ彿") + private String crushNo; + } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java index acf0704..9c8c055 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java @@ -1,11 +1,14 @@ package com.vincent.rsf.server.api.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fasterxml.jackson.databind.ObjectMapper; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.api.controller.erp.params.*; @@ -14,6 +17,7 @@ import com.vincent.rsf.server.api.controller.erp.params.dto.WkOrderDto; import com.vincent.rsf.server.common.domain.BaseParam; import com.vincent.rsf.server.common.domain.PageParam; +import com.vincent.rsf.server.common.utils.FieldsUtils; import com.vincent.rsf.server.manager.controller.dto.LocStockDto; import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.enums.*; @@ -221,8 +225,8 @@ @Override public R queryOrderStatus(QueryOrderParam queryParams) { WkOrder wkOrders = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>() - .in(WkOrder::getCode, queryParams.getOrderNo()) - .eq(WkOrder::getType, queryParams.getType())); + .eq(WkOrder::getCode, queryParams.getOrderNo()) + .eq(StringUtils.isNotBlank(queryParams.getType()), WkOrder::getType, queryParams.getType())); if (Objects.isNull(wkOrders)) { throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�"); } @@ -396,10 +400,32 @@ if (Objects.isNull(one)) { throw new CoolException("鍗曟嵁锛�" + syncOrder.getOrderNo() + ", 涓氬姟绫诲瀷涓嶅瓨鍦紒锛�"); } - wkOrder.setType(OrderWorkType.getOrderType(syncOrder.getWkType())) + WkOrder order = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>() + .eq(!Objects.isNull(syncOrder.getOrderId()), WkOrder::getPoId, syncOrder.getOrderId()) + .eq(WkOrder::getPoCode, syncOrder.getOrderNo())); + if (!Objects.isNull(order)) { + if (order.getExceStatus().equals(AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val) || + order.getExceStatus().equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val)) { + /**鍒犻櫎鍗曟嵁鏄庣粏*/ + asnOrderItemService.remove(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, order.getId())); + /**鍒犻櫎涓诲崟*/ + asnOrderService.removeById(order.getId()); + } else { + throw new CoolException("鍗曟嵁宸叉坊鍔狅紝涓嶅彲鎵ц淇敼鎴栨坊鍔犳搷浣滐紒锛�"); + } + } + String rule = SerialRuleCode.SYS_ASN_ORDER; + if (syncOrder.getType().equals(OrderType.ORDER_OUT.type)) { + rule = SerialRuleCode.SYS_OUT_STOCK_CODE; + } + + String ruleCode = SerialRuleUtils.generateRuleCode(rule, null); + wkOrder.setType(syncOrder.getType()) .setWkType(OrderWorkType.getWorkType(syncOrder.getWkType())) .setAnfme(syncOrder.getAnfme()) - .setCode(syncOrder.getOrderNo()) + .setPoCode(syncOrder.getOrderNo()) + .setPoId(syncOrder.getOrderId()) + .setCode(ruleCode) .setArrTime(syncOrder.getArrTime()) .setId(null) .setCreateTime(new Date()) @@ -409,17 +435,25 @@ if (!asnOrderService.save(wkOrder)) { throw new CoolException("鍗曟嵁淇濆瓨澶辫触锛侊紒"); } - List<SyncOrdersItem> ordersItems = syncOrder.getOrdersItems(); - ordersItems.forEach(item -> { - WkOrderItem wkOrderItem = new WkOrderItem(); - BeanUtils.copyProperties(item, wkOrderItem); - wkOrderItem.setOrderCode(wkOrder.getCode()) - .setOrderId(wkOrder.getId()) - .setId(null); - if (!asnOrderItemService.save(wkOrderItem)) { - throw new CoolException("鍗曟嵁鏄庣粏淇濆瓨澶辫触锛侊紒"); + + syncOrder.getOrdersItems().forEach(orderItem -> { + Map<String, Object> map = new ObjectMapper().convertValue(orderItem, Map.class); + map.put("orderId", wkOrder.getId()); + map.put("poId", wkOrder.getPoId()); + map.put("poCode", wkOrder.getPoCode()); + map.put("order_code", wkOrder.getCode()); + + if (!asnOrderItemService.fieldsSave(map, loginUserId)) { + throw new CoolException("鏄庣粏淇濆瓨澶辫触锛侊紒"); } }); + List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>() + .eq(WkOrderItem::getOrderId, wkOrder.getId())); + double sum = orderItems.stream().mapToDouble(WkOrderItem::getAnfme).sum(); + wkOrder.setAnfme(sum); + if (!asnOrderService.updateById(wkOrder)) { + throw new CoolException("璁″垝鏀惰揣鏁伴噺淇敼澶辫触锛侊紒"); + } }); } return R.ok(); diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java index 44601b4..33c3f2a 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java @@ -9,6 +9,7 @@ import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.common.domain.BaseParam; import com.vincent.rsf.server.common.domain.PageParam; +import com.vincent.rsf.server.manager.enums.CommonStatus; import com.vincent.rsf.server.system.entity.Fields; import com.vincent.rsf.server.system.entity.FieldsItem; import com.vincent.rsf.server.system.service.FieldsItemService; @@ -137,7 +138,9 @@ */ public static List<Fields> getFieldsSta() { FieldsService fieldsService = SpringUtils.getBean(FieldsService.class); - return fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getStatus, 1).eq(Fields::getFlagEnable, 1)); + return fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getStatus, CommonStatus.COMMONSTATUS_YES.val) + .eq(Fields::getUnique, CommonStatus.COMMONSTATUS_YES.val) + .eq(Fields::getFlagEnable, CommonStatus.COMMONSTATUS_YES.val).orderByAsc(Fields::getId)); } /** diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/CommonStatus.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/CommonStatus.java new file mode 100644 index 0000000..6decdc5 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/CommonStatus.java @@ -0,0 +1,21 @@ +package com.vincent.rsf.server.manager.enums; + +/** + * 閫氱敤鐘舵�� + */ +public enum CommonStatus { + + //閫氱敤鐘舵�� + COMMONSTATUS_YES(1, "鏄惁"), + COMMONSTATUS_NO(0, "鍚�"), + ; + + CommonStatus(Integer val, String desc) { + this.val = val; + this.desc = desc; + } + + public Integer val; + + public String desc; +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java index 4a033b9..3617b00 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java @@ -30,6 +30,7 @@ import com.vincent.rsf.server.manager.service.CompanysService; import com.vincent.rsf.server.manager.service.MatnrService; import com.vincent.rsf.server.system.constant.SerialRuleCode; +import com.vincent.rsf.server.system.entity.Fields; import com.vincent.rsf.server.system.service.DictDataService; import com.vincent.rsf.server.system.service.FieldsItemService; import com.vincent.rsf.server.system.service.FieldsService; @@ -242,7 +243,15 @@ try { StringBuffer sb = new StringBuffer(); if (Objects.isNull(wkOrderItem.getFieldsIndex()) || StringUtils.isBlank(wkOrderItem.getFieldsIndex())) { - sb.append(wkOrderItem.getMatnrId() + wkOrderItem.getSplrBatch() ); + List<Fields> fields = FieldsUtils.getFieldsSta(); + for (Fields field : fields) { + if (Objects.isNull(params.get(field.getFields()))) { + continue; + } + //瀛楁鎷兼帴 + sb.append(params.get(field.getFields())); + } + sb.append(wkOrderItem.getMatnrId() + wkOrderItem.getSplrBatch()); //鑾峰彇16浣島uid String uuid16 = Cools.md5Chinese(sb.toString()); wkOrderItem.setFieldsIndex(uuid16); diff --git a/rsf-server/src/main/resources/application-dev.yml b/rsf-server/src/main/resources/application-dev.yml index 6373fc4..97089e8 100644 --- a/rsf-server/src/main/resources/application-dev.yml +++ b/rsf-server/src/main/resources/application-dev.yml @@ -14,7 +14,7 @@ # url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai # username: rsf username: root -# url: jdbc:mysql://10.10.10.200:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai +# url: jdbc:mysql://10.10.10.200:3306/rsf-xiri?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai # password: xltys1995 url: jdbc:mysql://127.0.0.1:3306/rsf-xiri?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai password: 34821015 -- Gitblit v1.9.1