feat(wms): 添加客户、物料和运输管理界面并扩展退货服务功能

- 新增客户管理界面,支持客户基础信息的增删改查
- 新增物料管理界面,实现物料分类和规格管理功能
- 新增运输管理界面,提供物流公司信息维护功能
- 扩展退货服务逻辑,增加多个销售出库单据类型处理
- 修改退货服务中的工厂代码配置参数
- 实现客户、物料和运输数据的完整CRUD操作流程
- 集成打印模板选择和状态开关等功能组件
This commit is contained in:
yangyufu
2026-04-17 10:27:45 +08:00
committed by zhouz
parent f0a63c294d
commit 0bb5cd491b
8 changed files with 45 additions and 25 deletions

View File

@@ -49,7 +49,7 @@ public class TransportationbaseServiceImpl implements TransportationbaseService
if (ObjectUtil.isNotEmpty(cust_name)) {
map.put("cust_name", "%" + cust_name + "%");
}
JSONObject json = WQL.getWO("QMD_CS_TRANSPORAIONL").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "update_time ASC");
JSONObject json = WQL.getWO("QMD_CS_TRANSPORAIONL").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "create_time DESC ,update_time ASC");
return json;
}

View File

@@ -8,9 +8,16 @@ import java.util.List;
public interface MdmToLmsService {
/**
* MDM客户接口
*/
CommonResponseDto transCustomerInfo(JSONObject jsonData);
/**
* MDM供应商接口
*/
CommonResponseDto transSupplierInfo(JSONObject jsonData);
/**
* MDM物料主数据接口
*/
CommonResponseDto transMaterialInfo(JSONObject jsonData);
}

View File

@@ -99,7 +99,7 @@ public class MdmToLmsServiceImpl implements MdmToLmsService {
customer_jo.put("mdm_status", customerStatus);
customer_jo.put("sales_owner", sales_owner);
customer_jo.put("create_id", currentUserId);
customer_jo.put("create_name", "mdmAdmin");
customer_jo.put("create_name", "mdm_user");
customer_jo.put("create_time", now);
WQLObject.getWQLObject("md_cs_customerbase").insert(customer_jo);
ResponseItemsData itemsData = ResponseItemsData.adapter(mdId, mdCode, mdDescription, StatusEnum.ACCEPT_SUCCESS.getCode(), StatusEnum.ACCEPT_SUCCESS.getMessage());
@@ -109,7 +109,7 @@ public class MdmToLmsServiceImpl implements MdmToLmsService {
customer_jo.put("cust_simple_name", abbreviation);
customer_jo.put("sales_owner", sales_owner);
customer_jo.put("update_optid", currentUserId);
customer_jo.put("update_optname", "mdmAdmin");
customer_jo.put("update_optname", "mdm_user");
customer_jo.put("mdm_status", customerStatus);
customer_jo.put("update_time", now);
WQLObject.getWQLObject("md_cs_customerbase").update(customer_jo);
@@ -179,7 +179,7 @@ public class MdmToLmsServiceImpl implements MdmToLmsService {
supplier_jo.put("cust_simple_name", abbreviation);
supplier_jo.put("mdm_status", gfSupplierStatus);
supplier_jo.put("create_id", currentUserId);
supplier_jo.put("create_name", "mdmAdmin");
supplier_jo.put("create_name", "mdm_user");
supplier_jo.put("create_time", now);
WQLObject.getWQLObject("md_cs_transportationbase").insert(supplier_jo);
ResponseItemsData itemsData = ResponseItemsData.adapter(mdId, mdCode, mdDescription, StatusEnum.ACCEPT_SUCCESS.getCode(), StatusEnum.ACCEPT_SUCCESS.getMessage());
@@ -188,7 +188,7 @@ public class MdmToLmsServiceImpl implements MdmToLmsService {
supplier_jo.put("cust_name", supplierName);
supplier_jo.put("cust_simple_name", abbreviation);
supplier_jo.put("update_optid", currentUserId);
supplier_jo.put("update_optname", "mdmAdmin");
supplier_jo.put("update_optname", "mdm_user");
supplier_jo.put("mdm_status", gfSupplierStatus);
supplier_jo.put("update_time", now);
WQLObject.getWQLObject("md_cs_transportationbase").update(supplier_jo);
@@ -248,7 +248,7 @@ public class MdmToLmsServiceImpl implements MdmToLmsService {
}
JSONObject material_jo = WQLObject.getWQLObject("md_me_materialbase").query("material_code = '" + mdCode + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(material_jo)) {
JSONObject unit = WQLObject.getWQLObject("md_pb_measureunit").query("unit_code = '" + meins + "'").uniqueResult(0);
JSONObject unit = WQLObject.getWQLObject("md_pb_measureunit").query("unit_code = '" + meins + "' and is_delete ='0'").uniqueResult(0);
if (ObjectUtil.isEmpty(unit)) {
throw new BadRequestException("MDM->未查询到相关计量单位,请进行维护!");
}
@@ -258,14 +258,15 @@ public class MdmToLmsServiceImpl implements MdmToLmsService {
material_jo.put("material_name", mdDescription);
material_jo.put("base_unit_id", unit.getString("measure_unit_id"));
material_jo.put("mdm_status", mstae);
material_jo.put("is_used", "1");
material_jo.put("create_id", currentUserId);
material_jo.put("create_name", "mdmAdmin");
material_jo.put("create_name", "mdm_user");
material_jo.put("create_time", now);
WQLObject.getWQLObject("md_me_materialbase").insert(material_jo);
ResponseItemsData itemsData = ResponseItemsData.adapter(mdId, mdCode, mdDescription, StatusEnum.ACCEPT_SUCCESS.getCode(), StatusEnum.ACCEPT_SUCCESS.getMessage());
responseItemsData.add(itemsData);
} else {
JSONObject unit = WQLObject.getWQLObject("md_pb_measureunit").query("unit_code = '" + meins + "'").uniqueResult(0);
JSONObject unit = WQLObject.getWQLObject("md_pb_measureunit").query("unit_code = '" + meins + "' and is_delete ='0'").uniqueResult(0);
if (ObjectUtil.isEmpty(unit)) {
throw new BadRequestException("MDM->未查询到相关计量单位,请进行维护!");
}
@@ -273,7 +274,7 @@ public class MdmToLmsServiceImpl implements MdmToLmsService {
material_jo.put("base_unit_id", unit.getString("measure_unit_id"));
material_jo.put("mdm_status", mstae);
material_jo.put("update_optid", currentUserId);
material_jo.put("update_optname", "mdmAdmin");
material_jo.put("update_optname", "mdm_user");
material_jo.put("update_time", now);
WQLObject.getWQLObject("md_me_materialbase").update(material_jo);
ResponseItemsData itemsData = ResponseItemsData.adapter(mdId, mdCode, mdDescription, StatusEnum.ACCEPT_SUCCESS.getCode(), StatusEnum.ACCEPT_SUCCESS.getMessage());

View File

@@ -52,7 +52,7 @@ public class LmsToSapServiceImpl implements LmsToSapService {
String token = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_TOKEN").getValue();
String sap_client = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_CLIENT").getValue();
String api = "";
url = url + "/sap/center/wms/004";
url = url + "/sap/center/lms/004";
try {
String resultMsg = HttpRequest.post(url).header("TOKEN", token)
.header("sap-client", sap_client)
@@ -113,7 +113,7 @@ public class LmsToSapServiceImpl implements LmsToSapService {
String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_URL").getValue();
String token = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_TOKEN").getValue();
String sap_client = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_CLIENT").getValue();
String api = "/sap/center/wms/005";
String api = "/sap/center/lms/005";
url = url + api;
try {
String resultMsg = HttpRequest.post(url).header("TOKEN", token)
@@ -154,7 +154,7 @@ public class LmsToSapServiceImpl implements LmsToSapService {
String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_URL").getValue();
String token = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_TOKEN").getValue();
String sap_client = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_CLIENT").getValue();
String api = "/sap/center/wms/007";
String api = "/sap/center/lms/007";
url = url + api;
try {
String resultMsg = HttpRequest.post(url).header("TOKEN", token)

View File

@@ -678,7 +678,7 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
}
// 销售出库
if (StrUtil.equals(bill_type, "1001") || StrUtil.equals(bill_type, "1011")) {
if (StrUtil.equals(bill_type, "1001") || StrUtil.equals(bill_type, "1011") || StrUtil.equals(bill_type, "1013") || StrUtil.equals(bill_type, "1014") || StrUtil.equals(bill_type, "1015")) {
// 1.回传sap
JSONArray paramSapMstArr = new JSONArray();
@@ -783,7 +783,7 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
paramDis.put("ZZWLHD", jsonSub.getString("thickness"));
paramDis.put("CHARG", jsonSub.getString("sap_pcsn"));
paramDis.put("KALAB", NumberUtil.round(jsonDis.getDoubleValue("plan_qty"), 3));
paramDis.put("WERKS", "2460");
paramDis.put("WERKS", "2461");
paramSapMstArr.add(paramDis);
}
param.put("ITEM", paramSapMstArr);
@@ -1308,7 +1308,7 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
}
// 销售出库
if (StrUtil.equals(bill_type, "1001") || StrUtil.equals(bill_type, "1011") ) {
if (StrUtil.equals(bill_type, "1001") || StrUtil.equals(bill_type, "1011") || StrUtil.equals(bill_type, "1013") || StrUtil.equals(bill_type, "1014") || StrUtil.equals(bill_type, "1015")) {
// 1.回传sap
JSONArray paramSapMstArr = new JSONArray();

View File

@@ -105,7 +105,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="送货单明细数">
<el-input-number v-model="form.shd_dtl_num" :min="1" :max="100" :precision="0" :controls="false" style="width: 200px;"/>
<el-input-number v-model="form.shd_dtl_num" :min="1" :max="100" :precision="0" :controls="false" style="width: 200px;" />
</el-form-item>
</el-col>
</el-row>
@@ -193,10 +193,10 @@
<el-table-column prop="jurid_name" label="法人代表" show-overflow-tooltip />
<el-table-column prop="bz_print_no" label="包装打印模板" width="150px" :formatter="printTemple" show-overflow-tooltip />
<el-table-column prop="bz_print_within" label="内标打印模板" width="150px" :formatter="printTemple2" show-overflow-tooltip />
<el-table-column prop="shd_print_no" label="送货单打印模板路径" width="180px" show-overflow-tooltip/>
<el-table-column prop="shd_print_no" label="送货单打印模板路径" width="180px" show-overflow-tooltip />
<el-table-column prop="shd_dtl_num" label="送货单明细数" width="150px" show-overflow-tooltip />
<el-table-column prop="is_auto_table" label="是否自动贴标" width="150px" show-overflow-tooltip :formatter="autoTable"/>
<el-table-column prop="update_optname" label="修改者" width="150px"/>
<el-table-column prop="is_auto_table" label="是否自动贴标" width="150px" show-overflow-tooltip :formatter="autoTable" />
<el-table-column prop="update_optname" label="修改者" width="150px" />
<el-table-column prop="update_time" label="修改时间" width="150" />
<el-table-column label="启用" align="center" prop="is_used">
<template slot-scope="scope">
@@ -210,6 +210,7 @@
/>
</template>
</el-table-column>
<el-table-column prop="mdm_status" label="MDM数据状态" :formatter="mdmStatusTrans" />
<el-table-column
v-permission="['admin','customerbase:edit','customerbase:del']"
label="操作"
@@ -283,7 +284,7 @@ const defaultForm = {
}
export default {
name: 'Customerbase',
dicts: ['is_used', 'print_temple', 'two_print_temple'],
dicts: ['is_used', 'print_temple', 'two_print_temple', 'CUSTOMERBASE_MDM_STATUS'],
components: { pagination, crudOperation, rrOperation, udOperation, Treeselect },
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
@@ -415,6 +416,9 @@ export default {
},
autoTable(row) {
return this.dict.label.is_used[row.is_auto_table]
},
mdmStatusTrans(row) {
return this.dict.label.CUSTOMERBASE_MDM_STATUS[row.mdm_status]
}
}
}

View File

@@ -36,7 +36,7 @@
</el-col>
</el-row>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation/>
<crudOperation />
<!--表单组件-->
<el-dialog
:close-on-click-modal="false"
@@ -149,6 +149,7 @@
/>
</template>
</el-table-column>
<el-table-column prop="mdm_status" label="MDM数据状态" :formatter="mdmStatusTrans" />
<el-table-column prop="update_optname" label="修改人" />
<el-table-column prop="update_time" label="修改时间" width="135" />
<el-table-column
@@ -221,7 +222,7 @@ const defaultForm = {
export default {
name: 'Materialbase',
// 数据字典
dicts: ['is_used'],
dicts: ['is_used', 'MATERIALBASE_MDM_STATUS'],
components: { pagination, crudOperation, rrOperation, udOperation, Treeselect },
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
@@ -404,6 +405,9 @@ export default {
}, 100)
})
}
},
mdmStatusTrans(row) {
return this.dict.label.MATERIALBASE_MDM_STATUS[row.mdm_status]
}
}
}

View File

@@ -187,6 +187,7 @@
/>
</template>
</el-table-column>
<el-table-column prop="mdm_status" label="MDM数据状态" width="120px" :formatter="mdmStatusTrans" />
<el-table-column prop="country" label="国家" :min-width="flexWidth('country',crud.data,'国家')" />
<el-table-column prop="state" label="省份" :min-width="flexWidth('state',crud.data,'省份')" />
<el-table-column prop="city" label="城市" :min-width="flexWidth('city',crud.data,'城市')" />
@@ -261,7 +262,7 @@ const defaultForm = {
remark: null
}
export default {
dicts: ['is_used'],
dicts: ['is_used', 'TRANSPORTATIONBASE_MDM_STATUS'],
name: 'Transportationbase',
components: { pagination, crudOperation, rrOperation, udOperation },
mixins: [presenter(), header(), form(defaultForm), crud()],
@@ -329,6 +330,9 @@ export default {
data.is_used = '0'
}
})
},
mdmStatusTrans(row) {
return this.dict.label.TRANSPORTATIONBASE_MDM_STATUS[row.mdm_status]
}
}
}