Commit 2b9efd62 sunke

产线补料页面调整,增加申请人和申请时间

一共三种情况 一种是料架料够 就直接出料架亮灯取完料盘订单关闭  第二种是料架有料但是不满足需求 提示缺料 是否继续出  是就强制出 料架把有的料亮灯取完订单关闭否就不做任何动作  第三种就是料架一盘料都没有 这个时候就要提示此工单无料是否关闭 是就关闭 否就不做动作
1 个父辈 cf98ab99
...@@ -15,6 +15,7 @@ import com.neotel.smfcore.core.order.bean.OrderBoxInfo; ...@@ -15,6 +15,7 @@ import com.neotel.smfcore.core.order.bean.OrderBoxInfo;
import com.neotel.smfcore.core.order.bean.OrderPnInfo; import com.neotel.smfcore.core.order.bean.OrderPnInfo;
import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS; import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS;
import com.neotel.smfcore.core.order.rest.bean.dto.OrderDto; import com.neotel.smfcore.core.order.rest.bean.dto.OrderDto;
import com.neotel.smfcore.core.order.rest.bean.dto.OrderItemDto;
import com.neotel.smfcore.core.order.rest.bean.dto.OrderPnDto; import com.neotel.smfcore.core.order.rest.bean.dto.OrderPnDto;
import com.neotel.smfcore.core.order.rest.bean.mapstruct.OrderItemMapper; import com.neotel.smfcore.core.order.rest.bean.mapstruct.OrderItemMapper;
import com.neotel.smfcore.core.order.rest.bean.mapstruct.OrderMapper; import com.neotel.smfcore.core.order.rest.bean.mapstruct.OrderMapper;
...@@ -40,6 +41,7 @@ import io.swagger.annotations.Api; ...@@ -40,6 +41,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
...@@ -160,22 +162,31 @@ public class OrderController { ...@@ -160,22 +162,31 @@ public class OrderController {
if (!ObjectUtils.isEmpty(id)) { if (!ObjectUtils.isEmpty(id)) {
LiteOrder liteOrder = liteOrderManager.get(id); LiteOrder liteOrder = liteOrderManager.get(id);
if (liteOrder != null) { if (liteOrder != null) {
OrderDto dto = orderMapper.toDto(liteOrder); return toOrderDto(liteOrder);
dto.setOrderItems(orderItemMapper.toDto(liteOrder.getOrderItems()));
return dto;
} }
} else if (!ObjectUtils.isEmpty(orderNo)) { } else if (!ObjectUtils.isEmpty(orderNo)) {
LiteOrder liteOrder = liteOrderManager.findByOrderNo(orderNo); LiteOrder liteOrder = liteOrderManager.findByOrderNo(orderNo);
if (liteOrder != null) { if (liteOrder != null) {
OrderDto dto = orderMapper.toDto(liteOrder); return toOrderDto(liteOrder);
dto.setOrderItems(orderItemMapper.toDto(liteOrder.getOrderItems()));
return dto;
} }
} }
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"orderNo"}); throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
} }
private OrderDto toOrderDto(LiteOrder liteOrder){
OrderDto dto = orderMapper.toDto(liteOrder);
List<OrderItemDto> itemDtos = orderItemMapper.toDto(liteOrder.getOrderItems());
for (OrderItemDto itemDto : itemDtos) {
String lgort = itemDto.getLgort();
if(Strings.isBlank(lgort)){
itemDto.setLgort(dto.getLgort());
}
}
dto.setOrderItems(itemDtos);
return dto;
}
@ApiOperation("上传工单") @ApiOperation("上传工单")
@PostMapping(value = "/upload") @PostMapping(value = "/upload")
@AnonymousAccess @AnonymousAccess
...@@ -196,8 +207,7 @@ public class OrderController { ...@@ -196,8 +207,7 @@ public class OrderController {
throw new ValidateException("smfcore.fileError", "文件解析失败"); throw new ValidateException("smfcore.fileError", "文件解析失败");
} }
for (HikOrderInfo outInfo : for (HikOrderInfo outInfo : itemList) {
itemList) {
//查找工单是否存在 //查找工单是否存在
String orderNo = outInfo.getJobNo(); String orderNo = outInfo.getJobNo();
...@@ -262,7 +272,7 @@ public class OrderController { ...@@ -262,7 +272,7 @@ public class OrderController {
if (ObjectUtil.isEmpty(result)) { if (ObjectUtil.isEmpty(result)) {
return ResultBean.newOkResult(result); return ResultBean.newOkResult(result);
} }
else if(result.equals("smfcore.order.out.short")){ else if(result.equals("smfcore.order.out.shortReel") || result.equals("smfcore.order.out.noReel")){
return ResultBean.newErrorResult(99, result, result); return ResultBean.newErrorResult(99, result, result);
} }
else { else {
......
...@@ -18,11 +18,13 @@ import com.neotel.smfcore.core.order.bean.OrderBoxInfo; ...@@ -18,11 +18,13 @@ import com.neotel.smfcore.core.order.bean.OrderBoxInfo;
import com.neotel.smfcore.core.order.bean.OrderPnInfo; import com.neotel.smfcore.core.order.bean.OrderPnInfo;
import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS; import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS;
import com.neotel.smfcore.core.order.rest.bean.dto.OrderDto; import com.neotel.smfcore.core.order.rest.bean.dto.OrderDto;
import com.neotel.smfcore.core.order.rest.bean.dto.OrderItemDto;
import com.neotel.smfcore.core.order.rest.bean.dto.OrderPnDto; import com.neotel.smfcore.core.order.rest.bean.dto.OrderPnDto;
import com.neotel.smfcore.core.order.rest.bean.mapstruct.OrderItemMapper; import com.neotel.smfcore.core.order.rest.bean.mapstruct.OrderItemMapper;
import com.neotel.smfcore.core.order.rest.bean.mapstruct.OrderMapper; import com.neotel.smfcore.core.order.rest.bean.mapstruct.OrderMapper;
import com.neotel.smfcore.core.order.rest.bean.mapstruct.OrderPnMapper; import com.neotel.smfcore.core.order.rest.bean.mapstruct.OrderPnMapper;
import com.neotel.smfcore.core.order.rest.bean.query.OrderQueryCondition; import com.neotel.smfcore.core.order.rest.bean.query.OrderQueryCondition;
import com.neotel.smfcore.core.order.rest.bean.query.RepleOrderQueryCondition;
import com.neotel.smfcore.core.order.service.manager.ILiteOrderManager; import com.neotel.smfcore.core.order.service.manager.ILiteOrderManager;
import com.neotel.smfcore.core.order.service.po.LiteOrder; import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.core.order.service.po.LiteOrderItem; import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
...@@ -42,6 +44,7 @@ import io.swagger.annotations.Api; ...@@ -42,6 +44,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
...@@ -109,7 +112,7 @@ public class RepleOrderController { ...@@ -109,7 +112,7 @@ public class RepleOrderController {
@ApiOperation("查询补料工单") @ApiOperation("查询补料工单")
@GetMapping @GetMapping
@PreAuthorize("@el.check('productionLineReple')") @PreAuthorize("@el.check('productionLineReple')")
public PageData<OrderDto> query(OrderQueryCondition criteria, Pageable pageable) { public PageData<OrderDto> query(RepleOrderQueryCondition criteria, Pageable pageable) {
//Query query = QueryHelp.getQuery(criteria); //Query query = QueryHelp.getQuery(criteria);
List<Criteria> criteriaList = QueryHelp.toCriteria(criteria); List<Criteria> criteriaList = QueryHelp.toCriteria(criteria);
if (criteria.getStatus() != null) { if (criteria.getStatus() != null) {
...@@ -143,22 +146,31 @@ public class RepleOrderController { ...@@ -143,22 +146,31 @@ public class RepleOrderController {
if (!ObjectUtils.isEmpty(id)) { if (!ObjectUtils.isEmpty(id)) {
LiteOrder liteOrder = liteOrderManager.get(id); LiteOrder liteOrder = liteOrderManager.get(id);
if (liteOrder != null) { if (liteOrder != null) {
OrderDto dto = orderMapper.toDto(liteOrder); return toOrderDto(liteOrder);
dto.setOrderItems(orderItemMapper.toDto(liteOrder.getOrderItems()));
return dto;
} }
} else if (!ObjectUtils.isEmpty(orderNo)) { } else if (!ObjectUtils.isEmpty(orderNo)) {
LiteOrder liteOrder = liteOrderManager.findByOrderNo(orderNo); LiteOrder liteOrder = liteOrderManager.findByOrderNo(orderNo);
if (liteOrder != null) { if (liteOrder != null) {
OrderDto dto = orderMapper.toDto(liteOrder); return toOrderDto(liteOrder);
dto.setOrderItems(orderItemMapper.toDto(liteOrder.getOrderItems()));
return dto;
} }
} }
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"orderNo"}); throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
} }
private OrderDto toOrderDto(LiteOrder liteOrder){
OrderDto dto = orderMapper.toDto(liteOrder);
List<OrderItemDto> itemDtos = orderItemMapper.toDto(liteOrder.getOrderItems());
for (OrderItemDto itemDto : itemDtos) {
String lgort = itemDto.getLgort();
if(Strings.isBlank(lgort)){
itemDto.setLgort(dto.getLgort());
}
}
dto.setOrderItems(itemDtos);
return dto;
}
@ApiOperation("产线补料工单出库") @ApiOperation("产线补料工单出库")
@PostMapping(value = "/out") @PostMapping(value = "/out")
...@@ -184,7 +196,7 @@ public class RepleOrderController { ...@@ -184,7 +196,7 @@ public class RepleOrderController {
if (ObjectUtil.isEmpty(result)) { if (ObjectUtil.isEmpty(result)) {
return ResultBean.newOkResult(result); return ResultBean.newOkResult(result);
} }
else if(result.equals("smfcore.order.out.short")){ else if(result.equals("smfcore.order.out.shortReel") || result.equals("smfcore.order.out.noReel")){
return ResultBean.newErrorResult(99, result, result); return ResultBean.newErrorResult(99, result, result);
} }
else { else {
......
...@@ -122,4 +122,14 @@ public class OrderDto implements Serializable { ...@@ -122,4 +122,14 @@ public class OrderDto implements Serializable {
*/ */
@ApiModelProperty(value = "面别") @ApiModelProperty(value = "面别")
private String wktype; private String wktype;
/**
* 申请人
*/
private String applyName;
/**
* 申请时间
*/
private Date applyDate;
} }
...@@ -17,6 +17,11 @@ public class OrderItemDto { ...@@ -17,6 +17,11 @@ public class OrderItemDto {
@ApiModelProperty(value = "站位号") @ApiModelProperty(value = "站位号")
private String station; private String station;
/**
*lgort String true 库位
*/
private String lgort;
@ApiModelProperty(value = "需求数量") @ApiModelProperty(value = "需求数量")
private Integer qty; private Integer qty;
......
package com.neotel.smfcore.core.order.rest.bean.query;
import com.neotel.smfcore.common.annotation.QueryCondition;
import com.neotel.smfcore.common.bean.BetweenData;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
@Data
public class RepleOrderQueryCondition {
@QueryCondition(blurry = "orderNo,jobNo,workLine,applyName,wktype,replenishmentNo")
private String blurry;
/**
* jobNo String true 工单号/合单号[合并唯一]
*/
@QueryCondition
private String jobNo;
/**
*workLine String true 产线
*/
@QueryCondition
private String workLine;
/**
* 申请人
*/
@QueryCondition
private String applyName;
/**
* 申请时间
*/
@QueryCondition(type = QueryCondition.Type.BETWEEN)
@DateTimeFormat(pattern = "yyyy-MM-dd")
private BetweenData<Date> applyDate;
/**
* 面别
*/
@QueryCondition
private String wktype;
/**
*replenishmentNo String false 补料单号,如果有值表示此单为补料单[合并唯一]
*/
@QueryCondition
private String replenishmentNo;
@QueryCondition(type = QueryCondition.Type.BETWEEN)
private BetweenData<Date> createDate;
@QueryCondition(type = QueryCondition.Type.BETWEEN)
@DateTimeFormat(pattern = "yyyy-MM-dd")
private BetweenData<Date> startDate;
@QueryCondition(type = QueryCondition.Type.IN, propName = "subWknumList")
private List<String> orderNoList;
@QueryCondition(type = QueryCondition.Type.IN, propName = "source")
private List<String> sourceList;
@QueryCondition(type = QueryCondition.Type.NIN, propName = "source")
private List<String> excludeSourceList;
//状态,0=所有,1=已关闭,2=未关闭,3=出库中
private Integer status;
//
// @QueryCondition(type=QueryCondition.Type.IN,propName = "status")
// private List<Integer> statusList ;
}
...@@ -29,8 +29,7 @@ public class LiteOrder extends BasePo implements Serializable { ...@@ -29,8 +29,7 @@ public class LiteOrder extends BasePo implements Serializable {
this.orderItems = orderItems; this.orderItems = orderItems;
this.orderNo = orderNo; this.orderNo = orderNo;
this.type = 2; this.type = 2;
for (LiteOrderItem item : for (LiteOrderItem item : orderItems) {
orderItems) {
if (!StringUtils.isEmpty(item.getMaterialNo())) { if (!StringUtils.isEmpty(item.getMaterialNo())) {
// if (!StringUtils.isEmpty(item.getPn()) && (StringUtils.isEmpty(item.getRi()))) { // if (!StringUtils.isEmpty(item.getPn()) && (StringUtils.isEmpty(item.getRi()))) {
this.type = 1; this.type = 1;
...@@ -186,6 +185,16 @@ public class LiteOrder extends BasePo implements Serializable { ...@@ -186,6 +185,16 @@ public class LiteOrder extends BasePo implements Serializable {
*/ */
private String wktype; private String wktype;
/**
* 申请人
*/
private String applyName;
/**
* 申请时间
*/
private Date applyDate;
public Integer getBoxNum(){ public Integer getBoxNum(){
if(boxInfos!=null){ if(boxInfos!=null){
return boxInfos.size(); return boxInfos.size();
...@@ -320,6 +329,8 @@ public class LiteOrder extends BasePo implements Serializable { ...@@ -320,6 +329,8 @@ public class LiteOrder extends BasePo implements Serializable {
this.setWemng(outInfo.getWemng()); this.setWemng(outInfo.getWemng());
this.setWktype(outInfo.getWktype()); this.setWktype(outInfo.getWktype());
this.setSubWknumList(outInfo.getSubWknumList()); this.setSubWknumList(outInfo.getSubWknumList());
this.setApplyName(outInfo.getApplyName());
this.setApplyDate(outInfo.getApplyD());
if(orderItems==null){ if(orderItems==null){
orderItems=new ArrayList<>(); orderItems=new ArrayList<>();
} }
......
...@@ -35,6 +35,11 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li ...@@ -35,6 +35,11 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
*/ */
private int increment=0; private int increment=0;
/**
*lgort String true 库位
*/
private String lgort;
/** /**
*reason String false 移动原因 *reason String false 移动原因
......
...@@ -102,6 +102,19 @@ public class HikOrderInfo implements Serializable { ...@@ -102,6 +102,19 @@ public class HikOrderInfo implements Serializable {
*/ */
private String wktype; private String wktype;
/**
* 申请人
*/
private String applyName;
/**
* 申请时间
*/
private String applyDate;
public void setSubWknum(String subWknum) { public void setSubWknum(String subWknum) {
this.subWknum = subWknum; this.subWknum = subWknum;
subWknumList = Lists.newArrayList(subWknum.split(",")); subWknumList = Lists.newArrayList(subWknum.split(","));
...@@ -122,7 +135,8 @@ public class HikOrderInfo implements Serializable { ...@@ -122,7 +135,8 @@ public class HikOrderInfo implements Serializable {
item.setOverFlag(this.getOverFlag()); item.setOverFlag(this.getOverFlag());
item.setIncrement(this.getPrepareIncrement()); item.setIncrement(this.getPrepareIncrement());
item.setReason(this.getReason()); item.setReason(this.getReason());
item.setWemng(this.wemng); item.setWemng(this.getWemng());
item.setLgort(this.getLgort());
return item; return item;
} }
...@@ -146,4 +160,18 @@ public class HikOrderInfo implements Serializable { ...@@ -146,4 +160,18 @@ public class HikOrderInfo implements Serializable {
} }
return sDate; return sDate;
} }
/**
* 申请时间
* @return
*/
public Date getApplyD(){
Date sDate=null;
try {
sDate= DateUtil.toDate(applyDate,"yyyy-MM-dd HH:mm:ss");
}catch (Exception ex){
log.error("HitOutInfo getApplyD ["+applyDate+"] 出错:"+ex.toString());
}
return sDate;
}
} }
...@@ -27,7 +27,6 @@ smfcore.noAccessUpdate=\u6CA1\u6709\u5220\u9664\u83DC\u5355\u7684\u6743\u9650 ...@@ -27,7 +27,6 @@ smfcore.noAccessUpdate=\u6CA1\u6709\u5220\u9664\u83DC\u5355\u7684\u6743\u9650
smfcore.roleCannotDel=\u89D2\u8272[{0}]\u6709[{1}]\u4E2A\u7528\u6237\u5173\u8054\u6539\u89D2\u8272,\u4E0D\u80FD\u5220\u9664 smfcore.roleCannotDel=\u89D2\u8272[{0}]\u6709[{1}]\u4E2A\u7528\u6237\u5173\u8054\u6539\u89D2\u8272,\u4E0D\u80FD\u5220\u9664
smfcore.notFindPos=\u672A\u627E\u5230\u9501\u5B9A\u5E93\u4F4D smfcore.notFindPos=\u672A\u627E\u5230\u9501\u5B9A\u5E93\u4F4D
smfcore.error.barcode.empty=\u672A\u626B\u5230\u6761\u7801 smfcore.error.barcode.empty=\u672A\u626B\u5230\u6761\u7801
smfcore.error.barcode.many=\u627E\u5230\u591A\u4E2A\u6709\u6548\u6761\u7801,\u65E0\u6CD5\u5165\u5E93
smfcore.error.barcode.expired=\u7269\u6599\u5DF2\u8FC7\u671F,\u65E0\u6CD5\u5165\u5E93. smfcore.error.barcode.expired=\u7269\u6599\u5DF2\u8FC7\u671F,\u65E0\u6CD5\u5165\u5E93.
smfcore.allBoxView.noReel=\u5E93\u4F4D{0}\u4E2D\u65E0\u7269\u6599 smfcore.allBoxView.noReel=\u5E93\u4F4D{0}\u4E2D\u65E0\u7269\u6599
smfcore.error.barcode.many=\u627E\u5230\u591A\u4E2A\u6709\u6548\u7684\u6761\u7801 smfcore.error.barcode.many=\u627E\u5230\u591A\u4E2A\u6709\u6548\u7684\u6761\u7801
...@@ -105,7 +104,6 @@ smfcore.error.barcode.noRules=\u89E3\u6790\u89C4\u5219\u672A\u5B9A\u4E49 ...@@ -105,7 +104,6 @@ smfcore.error.barcode.noRules=\u89E3\u6790\u89C4\u5219\u672A\u5B9A\u4E49
smfcore.error.barcode.wrongLength=\u6761\u7801[{0}]\u957F\u5EA6\u9519\u8BEF smfcore.error.barcode.wrongLength=\u6761\u7801[{0}]\u957F\u5EA6\u9519\u8BEF
smfcore.error.barcode.noField=\u6761\u7801\u89E3\u6790\u5931\u8D25,\u672A\u627E\u5230{0}\u5B57\u6BB5 smfcore.error.barcode.noField=\u6761\u7801\u89E3\u6790\u5931\u8D25,\u672A\u627E\u5230{0}\u5B57\u6BB5
smfcore.error.barcode.pnNotExist=x\u6863\u6848 {0} \u4E0D\u5B58\u5728 smfcore.error.barcode.pnNotExist=x\u6863\u6848 {0} \u4E0D\u5B58\u5728
smfcore.error.barcode.invalid={0}\u4E0D\u662F\u6709\u6548\u7684\u6761\u7801
smfcore.error.barcode.locked=\u5E93\u4F4D[{0}]\u5DF2\u88AB\u9501\u5B9A smfcore.error.barcode.locked=\u5E93\u4F4D[{0}]\u5DF2\u88AB\u9501\u5B9A
smfcore.manualOut.ok=\u624B\u52A8\u51FA\u5E93\u6210\u529F smfcore.manualOut.ok=\u624B\u52A8\u51FA\u5E93\u6210\u529F
smfcore.manualOut.notFound=\u4ED3\u5E93\u4E2D\u672A\u627E\u5230\u6599\u76D8\u4FE1\u606F smfcore.manualOut.notFound=\u4ED3\u5E93\u4E2D\u672A\u627E\u5230\u6599\u76D8\u4FE1\u606F
...@@ -254,6 +252,8 @@ smfcore.component.storeError=\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u5E93\u5B58\uF ...@@ -254,6 +252,8 @@ smfcore.component.storeError=\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u5E93\u5B58\uF
smfcore.user.group.error=\u7EC4[{0}]\u5DF2\u7ECF\u5206\u914D\u7ED9\u64CD\u4F5C\u5458[{1}] smfcore.user.group.error=\u7EC4[{0}]\u5DF2\u7ECF\u5206\u914D\u7ED9\u64CD\u4F5C\u5458[{1}]
smfcore.noValidPos=\u672A\u627E\u5230\u5355\u636E\u53F7 smfcore.noValidPos=\u672A\u627E\u5230\u5355\u636E\u53F7
smfcore.order.out.short=\u5DE5\u5355\u7F3A\u6599 smfcore.order.out.short=\u5DE5\u5355\u7F3A\u6599
smfcore.order.out.shortReel=\u5DE5\u5355\u7F3A\u6599,\u662F\u5426\u7EE7\u7EED\u51FA\u5E93
smfcore.order.out.noReel=\u6B64\u5DE5\u5355\u65E0\u6599\u662F\u5426\u5173\u95ED
smfcore.outList.out.short=\u5B58\u50A8\u51FA\u5E93\u5355{0}\u7F3A\u6599 smfcore.outList.out.short=\u5B58\u50A8\u51FA\u5E93\u5355{0}\u7F3A\u6599
smfcore.outList.out.noTask=\u8F6C\u50A8\u51FA\u5E93\u5355\u65E0\u53EF\u6267\u884C\u7684\u4EFB\u52A1 smfcore.outList.out.noTask=\u8F6C\u50A8\u51FA\u5E93\u5355\u65E0\u53EF\u6267\u884C\u7684\u4EFB\u52A1
smfcore.posNotDel=\u5220\u9664\u5931\u8D25\uFF0C\u8BF7\u5148\u5220\u9664[{0}]\u7684\u6240\u6709\u5E93\u4F4D smfcore.posNotDel=\u5220\u9664\u5931\u8D25\uFF0C\u8BF7\u5148\u5220\u9664[{0}]\u7684\u6240\u6709\u5E93\u4F4D
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!