rev:sap同步销售单

This commit is contained in:
zhangzhiqiang
2023-06-26 08:50:08 +08:00
parent cb78d9a38b
commit bec170a530
10 changed files with 133 additions and 68 deletions

View File

@@ -58,11 +58,11 @@
</dependency>
<!-- 日志链路追踪 https://tlog.yomahub.com/pages/f62a84/#%E5%90%8C%E6%AD%A5%E6%97%A5%E5%BF%97-->
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>tlog-all-spring-boot-starter</artifactId>
<version>1.5.0</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.yomahub</groupId>-->
<!-- <artifactId>tlog-all-spring-boot-starter</artifactId>-->
<!-- <version>1.5.0</version>-->
<!-- </dependency>-->
<!-- 获取系统信息 -->
<dependency>

View File

@@ -143,34 +143,24 @@ public class StringUtils {
* 获取ip地址
*/
public static String getIp(HttpServletRequest request) {
// TODO 不解析IP地址
if(true){
return "127.0.0.1";
}
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
String ip = request.getHeader("X-Forwarded-For");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
String comma = ",";
String localhost = "127.0.0.1";
if (ip.contains(comma)) {
ip = ip.split(",")[0];
}
if (localhost.equals(ip)) {
// 获取本机真正的ip地址
try {
ip = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
log.error(e.getMessage(), e);
}
if (ip != null && ip.contains(",")) {
String[] ipArray = ip.split(",");
ip = ipArray[0];
}
return ip;
}

View File

@@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.json.XML;
@@ -14,6 +15,15 @@ import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.common.utils.WebServiceUtil;
import org.nl.wms.ext.sap.service.WmsToSapService;
import org.nl.wms.masterdata_manage.master.service.customer.IMdCsCustomerbaseService;
import org.nl.wms.masterdata_manage.master.service.customer.dao.MdCsCustomerbase;
import org.nl.wms.masterdata_manage.service.master.IMdPbMeasureunitService;
import org.nl.wms.masterdata_manage.service.master.dao.MdPbMeasureunit;
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.IMpsSaleOrderService;
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
@@ -25,6 +35,15 @@ import java.util.HashMap;
@Slf4j
public class WmsToSapServiceImpl implements WmsToSapService {
@Autowired
private IMdPbMeasureunitService mdPbMeasureunitService;
@Autowired
private IMdMeMaterialbaseService materialbaseService;
@Autowired
private IMdCsCustomerbaseService customerbaseService;
@Autowired
private IMpsSaleOrderService saleOrderService;
@Override
public JSONObject getMater(JSONObject form) {
return null;
@@ -103,7 +122,7 @@ public class WmsToSapServiceImpl implements WmsToSapService {
for (int i = 0; i < item.size(); i++) {
JSONObject row = item.getJSONObject(i);
boolean need_update = false;
JSONObject sale_jo = WQLObject.getWQLObject("pcs_sale_order").query("sale_code = '" + row.getString("Vbeln") + "' AND seq_no = '" + row.getString("Posnr") + "'").uniqueResult(0);
JSONObject sale_jo = WQLObject.getWQLObject("pcs_sale_order").query("sale_code = '" + + "' AND seq_no = '" + + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(sale_jo)) {
sale_jo = new JSONObject();
sale_jo.put("sale_id", IdUtil.getSnowflake(1, 1).nextId());
@@ -119,38 +138,39 @@ public class WmsToSapServiceImpl implements WmsToSapService {
sale_jo.put("sale_type", row.getString("Auart"));
String material_code = row.getString("Matnr").replaceAll("^(0+)", "");
//获取物料对应的物料标识
JSONObject mater_jo = WQLObject.getWQLObject("MD_ME_MaterialBase").query("material_code = '" + material_code + "'").uniqueResult(0);
MdMeMaterialbase mater_jo = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_code", material_code));
if (ObjectUtil.isEmpty(mater_jo)) {
sale_jo.put("material_id", "0");
sale_jo.put("is_success", "0");
sale_jo.put("remark", "未查询到该销售订单对应的物料主数据:" + material_code);
err_num++;
} else {
String material_id = mater_jo.getString("material_id");
String material_id =mater_jo.getMaterial_id();
sale_jo.put("material_id", material_id);
}
sale_jo.put("status", "10");
sale_jo.put("sale_qty", row.getString("Kwmeng"));
sale_jo.put("produce_seq", "1");
String cust_code = row.getString("Kunnr");
JSONObject cust_jo = WQLObject.getWQLObject("md_cs_customerbase").query("cust_code = '" + cust_code + "'").uniqueResult(0);
MdCsCustomerbase cust_jo = customerbaseService.getOne(new QueryWrapper<MdCsCustomerbase>().eq("cust_code", cust_code));
if (ObjectUtil.isNotEmpty(cust_jo)) {
sale_jo.put("cust_id", cust_jo.getString("cust_id"));
sale_jo.put("cust_code", cust_jo.getString("cust_code"));
sale_jo.put("cust_name", cust_jo.getString("cust_name"));
sale_jo.put("cust_id", cust_jo.getCust_id());
sale_jo.put("cust_code", cust_jo.getCust_code());
sale_jo.put("cust_name", cust_jo.getCust_name());
} else {
sale_jo.put("is_success", "0");
sale_jo.put("remark", "未查询到该销售订单对应的客户信息:" + cust_code);
err_num++;
}
String unit_code = row.getString("Vrkme");
JSONObject unit_jo = WQLObject.getWQLObject("md_pb_measureunit").query("unit_name = '" + unit_code + "'").uniqueResult(0);
MdPbMeasureunit unit_jo = mdPbMeasureunitService.getOne(new QueryWrapper<MdPbMeasureunit>()
.eq("unit_name", unit_code));
if (ObjectUtil.isEmpty(unit_jo)) {
sale_jo.put("qty_unit_id", "0");
sale_jo.put("remark", "未查询到该销售订单对应的单位信息:" + unit_code);
err_num++;
} else {
sale_jo.put("qty_unit_id", unit_jo.getString("measure_unit_id"));
sale_jo.put("qty_unit_id", unit_jo.getMeasure_unit_id());
}
sale_jo.put("plandeliver_date", row.getString("Edatu"));
sale_jo.put("create_id", SecurityUtils.getCurrentUserId());

View File

@@ -127,7 +127,8 @@ public class MdPbClassstandardServiceImpl extends ServiceImpl<MdPbClassstandardM
query.eq("parent_class_id",whereJson.get("parent_class_id"));
}
if (ObjectUtil.isNotEmpty(whereJson.get("class_idStr"))) {
query.last("and class_id in "+whereJson.get("class_idStr"));
query.in("class_id",whereJson.get("class_idStr"));
// query.last("and class_id in "+whereJson.get("class_idStr"));
}
List<Map<String, Object>> list = this.listMaps(query);
return getMaps(list);

View File

@@ -169,16 +169,29 @@ public class PdmProduceWorkorderController {
@ApiOperation("报工数修改")
@SaIgnore
public ResponseEntity<Object> reportQuery2(ReportQuery param, PageQuery pageQuery) {
Page<Object> page = PageHelper
.startPage(pageQuery.getPage() + 1, pageQuery.getSize())
.setOrderBy("workorder_code desc,seq_number asc");
param.setOrderby("true");
Page<Object> page = null;
if (pageQuery.getPage() != null && pageQuery.getSize() !=null){
page = PageHelper
.startPage(pageQuery.getPage() + 1, pageQuery.getSize())
.setOrderBy("workorder_code desc,seq_number asc");
param.setOrderby("true");
}
List<Map> list = iPdmProduceWorkorderService.reportQuery(param);
TableDataInfo<Map> build = TableDataInfo.build(list);
build.setTotalElements(page.getTotal());
if (page!=null){
build.setTotalElements(page.getTotal());
}
return new ResponseEntity<>(build, HttpStatus.OK);
}
@PostMapping("/reportQuery3")
@Log("工单报工数")
@ApiOperation("工单报工数")
@SaIgnore
public ResponseEntity<Object> reportQuery3(@RequestBody ReportQuery param) {
return new ResponseEntity<>(TableDataInfo.build(iPdmProduceWorkorderService.reportQuery(param)), HttpStatus.OK);
}
@Log("导出数据")
@ApiOperation("导出数据")
@PostMapping(value = "/download")

View File

@@ -633,6 +633,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
form.put("material_spec", material.getMaterial_spec());
form.put("device_code", workOrder.getDevice_code());
form.put("is_needmove", workOrder.getIs_needmove() ? 1 : 0);
form.put("is_used_fxx", workOrder.getIs_used_fxx() ? 1 : 0);
if (param.containsKey("extra_map")) {
form.put("extra_map", param.getJSONObject("extra_map"));
}

View File

@@ -19,7 +19,7 @@ https://juejin.cn/post/6844903775631572999
<!--引入默认的一些设置-->
<!-- <include resource="log/AutoCreateInst.xml"/>-->
<appender name="esLogAppender" class="com.internetitem.logback.elasticsearch.ElasticsearchAppender">
<url>http://192.168.46.225:9200/_bulk</url>
<url>http://127.0.0.1:9200/_bulk</url>
<index>${esIndex}</index>
<type>mes_log</type>
<loggerName>es-logger</loggerName> <!-- optional -->
@@ -79,10 +79,8 @@ https://juejin.cn/post/6844903775631572999
</appender>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<withJansi>true</withJansi>
<encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder">
<encoder>
<pattern>${log.pattern}</pattern>
<!-- <charset>${log.charset}</charset>-->
</encoder>
</appender>
@@ -100,15 +98,14 @@ https://juejin.cn/post/6844903775631572999
<!--所有日志最多占多大容量-->
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
<!-- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
<encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!--异步到文件-->
<appender name="asyncFileAppender" class="com.yomahub.tlog.core.enhance.logback.async.AspectLogbackAsyncAppender">
<appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>500</queueSize>
<appender-ref ref="FILE"/>
@@ -120,7 +117,6 @@ https://juejin.cn/post/6844903775631572999
<springProfile name="dev">
<root level="info">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="esLogAppender"/>
</root>
<logger name="jdbc.audit" level="ERROR" additivity="false">
@@ -129,6 +125,10 @@ https://juejin.cn/post/6844903775631572999
<logger name="jdbc.resultset" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="es-logger" level="warn" additivity="false">
<appender-ref ref="esLogAppender"/>
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="springfox.documentation" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
@@ -168,6 +168,10 @@ https://juejin.cn/post/6844903775631572999
<logger name="jdbc.sqltiming" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="es-logger" level="warn" additivity="false">
<appender-ref ref="esLogAppender"/>
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.jinterop" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
@@ -177,26 +181,36 @@ https://juejin.cn/post/6844903775631572999
<appender-ref ref="CONSOLE"/>
<appender-ref ref="esLogAppender"/>
</root>
<logger name="es-logger" level="warn" additivity="false">
<appender-ref ref="esLogAppender"/>
</logger>
<logger name="jdbc.audit" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="asyncFileAppender"/>
<appender-ref ref="esLogAppender"/>
</logger>
<logger name="jdbc.resultset" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="asyncFileAppender"/>
<appender-ref ref="esLogAppender"/>
</logger>
<logger name="springfox.documentation" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="asyncFileAppender"/>
<appender-ref ref="esLogAppender"/>
</logger>
<logger name="jdbc.resultsettable" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="asyncFileAppender"/>
<appender-ref ref="esLogAppender"/>
</logger>
<logger name="jdbc.sqlonly" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="asyncFileAppender"/>
\<appender-ref ref="esLogAppender"/>
</logger>
<logger name="jdbc.sqltiming" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="asyncFileAppender"/>
<appender-ref ref="esLogAppender"/>
</logger>
<logger name="org.jinterop" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="asyncFileAppender"/>
\<appender-ref ref="esLogAppender"/>
</logger>
</springProfile>
<!--测试环境:打印控制台-->
@@ -211,11 +225,5 @@ https://juejin.cn/post/6844903775631572999
</springProfile>
<!--生产环境:打印控制台和输出到文件-->
<springProfile name="prod">
<root level="info">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="asyncFileAppender"/>
</root>
</springProfile>
</configuration>

View File

@@ -169,8 +169,7 @@
<el-table-column prop="confirm_time" label="审核时间" align="center" />
</el-table>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="dialogVisible = false">确定</el-button>
<el-button type="primary" @click="dialogVisible = false"> </el-button>
</span>
</el-dialog>
</template>
@@ -257,7 +256,7 @@ export default {
open() {
this.getworkprocedure()
this.getMaterialClass()
crudProduceshiftorder.reportQuery({ workorder_id: this.form.workorder_id }).then(res => {
crudProduceshiftorder.reportQuery3({ workorder_id: this.form.workorder_id }).then(res => {
this.tableData = res.content
})
},
@@ -276,7 +275,7 @@ export default {
'material_id': this.form.material_id
}
crudClassstandard.queryClassById(param).then(res => {
this.form.class_name = res.content[0].class_name
this.$set(this.form,'class_name',res.content[0].class_name)
})
},
getworkprocedure() {

View File

@@ -104,6 +104,7 @@ export function getReportWork(data) {
}
export function reportQuery(data) {
console.log(data)
return request({
url: '/api/produceWorkorder/reportQuery2',
method: 'get',
@@ -111,6 +112,15 @@ export function reportQuery(data) {
})
}
export function reportQuery3(data) {
return request({
url: '/api/produceWorkorder/reportQuery3',
method: 'post',
data
})
}
export function excelImport(data) {
return request({
url: 'api/produceWorkorder/excelImport',
@@ -142,4 +152,4 @@ export function reportApprove(data) {
})
}
export default { add, addRows, edit, del, submits, reportApprove, unSubmits, getTable, openStart, saveReport, finish, getReportWork, forceFinish, reportQuery, excelImport, getNotWorkDeviceByWorkproceduceId, replaceDevice }
export default { add, addRows, edit, del, submits, reportApprove, unSubmits, getTable, openStart, saveReport, finish, getReportWork, forceFinish, reportQuery, reportQuery3, excelImport, getNotWorkDeviceByWorkproceduceId, replaceDevice }

View File

@@ -44,7 +44,18 @@
</el-form-item>
</el-form>
</div>
<crudOperation v-show="false" :permission="permission" />
<crudOperation :permission="permission">
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-position"
size="mini"
@click="setEmpty(crud.selections)"
>
设置空位
</el-button>
</crudOperation>
</div>
<!--表格渲染-->
<el-dialog
@@ -214,6 +225,18 @@ export default {
}
},
methods: {
setEmpty(rows) {
var structIds = []
console.log(rows)
rows.forEach((item) => {
structIds.push(item.workorder_id)
})
alert(structIds)
// crudProduceshiftorder.submits(orders).then(res => {
// this.crud.notify('下发成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
// this.crud.toQuery()
// })
}, // 取消下发
setMaterValue(row) {
this.materialForm.material_id = row.material_id
this.materialForm.material_code = row.material_code