优化商品的多属性功能,编辑的页面也可以操作多属性

This commit is contained in:
jishenghua
2025-04-09 23:59:40 +08:00
parent 9c6eb10108
commit 7094e2f511
9 changed files with 269 additions and 36 deletions

View File

@@ -47,6 +47,8 @@ public class Material {
private String position;
private String attribute;
private Long tenantId;
private String deleteFlag;
@@ -227,6 +229,14 @@ public class Material {
this.position = position == null ? null : position.trim();
}
public String getAttribute() {
return attribute;
}
public void setAttribute(String attribute) {
this.attribute = attribute == null ? null : attribute.trim();
}
public Long getTenantId() {
return tenantId;
}

View File

@@ -1585,6 +1585,76 @@ public class MaterialExample {
return (Criteria) this;
}
public Criteria andAttributeIsNull() {
addCriterion("attribute is null");
return (Criteria) this;
}
public Criteria andAttributeIsNotNull() {
addCriterion("attribute is not null");
return (Criteria) this;
}
public Criteria andAttributeEqualTo(String value) {
addCriterion("attribute =", value, "attribute");
return (Criteria) this;
}
public Criteria andAttributeNotEqualTo(String value) {
addCriterion("attribute <>", value, "attribute");
return (Criteria) this;
}
public Criteria andAttributeGreaterThan(String value) {
addCriterion("attribute >", value, "attribute");
return (Criteria) this;
}
public Criteria andAttributeGreaterThanOrEqualTo(String value) {
addCriterion("attribute >=", value, "attribute");
return (Criteria) this;
}
public Criteria andAttributeLessThan(String value) {
addCriterion("attribute <", value, "attribute");
return (Criteria) this;
}
public Criteria andAttributeLessThanOrEqualTo(String value) {
addCriterion("attribute <=", value, "attribute");
return (Criteria) this;
}
public Criteria andAttributeLike(String value) {
addCriterion("attribute like", value, "attribute");
return (Criteria) this;
}
public Criteria andAttributeNotLike(String value) {
addCriterion("attribute not like", value, "attribute");
return (Criteria) this;
}
public Criteria andAttributeIn(List<String> values) {
addCriterion("attribute in", values, "attribute");
return (Criteria) this;
}
public Criteria andAttributeNotIn(List<String> values) {
addCriterion("attribute not in", values, "attribute");
return (Criteria) this;
}
public Criteria andAttributeBetween(String value1, String value2) {
addCriterion("attribute between", value1, value2, "attribute");
return (Criteria) this;
}
public Criteria andAttributeNotBetween(String value1, String value2) {
addCriterion("attribute not between", value1, value2, "attribute");
return (Criteria) this;
}
public Criteria andTenantIdIsNull() {
addCriterion("tenant_id is null");
return (Criteria) this;

View File

@@ -23,9 +23,7 @@ import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
@Service
@@ -97,6 +95,21 @@ public class MaterialExtendService {
updatedJson.add(tempJson);
}
}
//针对多属性商品要考虑到有条码被删的情况,需要和原来的条码明细进行对比
//1.先查询原来的条码列表
List<MaterialExtendVo4List> meList = materialExtendMapperEx.getDetailList(materialId);
//2.构造新的条码列表map
Map<String, String> barCodeMap = new HashMap<>();
for (int i = 0; i < meArr.size(); i++) {
JSONObject tempJson = meArr.getJSONObject(i);
barCodeMap.put(tempJson.getString("barCode"),tempJson.getString("barCode"));
}
//3.如果老的条码在新的里面不存在,则丢入删除队列
for(MaterialExtendVo4List me: meList) {
if(barCodeMap.get(me.getBarCode()) == null) {
deletedJson.add(me.getId());
}
}
}
}
if (null != deletedJson) {

View File

@@ -154,6 +154,8 @@ public class MaterialService {
public int insertMaterial(JSONObject obj, HttpServletRequest request)throws Exception {
Material m = JSONObject.parseObject(obj.toJSONString(), Material.class);
m.setEnabled(true);
//构造多属性数组字符串
m.setAttribute(parseAttributeBySku(obj));
try{
materialMapperEx.insertSelectiveEx(m);
Long mId = m.getId();
@@ -196,6 +198,8 @@ public class MaterialService {
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
public int updateMaterial(JSONObject obj, HttpServletRequest request) throws Exception{
Material material = JSONObject.parseObject(obj.toJSONString(), Material.class);
//构造多属性数组字符串
material.setAttribute(parseAttributeBySku(obj));
try{
materialMapper.updateByPrimaryKeySelective(material);
if(material.getUnitId() == null) {
@@ -1462,4 +1466,26 @@ public class MaterialService {
public MaterialExtend getMaterialExtendBySerialNumber(String serialNumber) {
return materialMapperEx.getMaterialExtendBySerialNumber(serialNumber);
}
/**
* 构造多属性数组字符串
* @param obj
* @return
*/
public String parseAttributeBySku(JSONObject obj) {
if(obj!=null) {
JSONObject attributeObj = new JSONObject();
JSONArray manySku = obj.getJSONArray("manySku");
JSONArray skuOne = obj.getJSONArray("skuOne");
JSONArray skuTwo = obj.getJSONArray("skuTwo");
JSONArray skuThree = obj.getJSONArray("skuThree");
attributeObj.put("manySku", manySku);
attributeObj.put("skuOne", skuOne);
attributeObj.put("skuTwo", skuTwo);
attributeObj.put("skuThree", skuThree);
return attributeObj.toJSONString();
} else {
return null;
}
}
}